Skip to content

tanstack-fetch 1.5.0 发布:为 Vue 与 Nuxt 带来 TanStack Query 就绪的 fetch 客户端 ​

译注:本文编译自 dev.to 上发布的 tanstack-fetch 1.5.0 版本说明,原文标题为 "tanstack-fetch 1.5.0 — Vue & Nuxt helpers for a TanStack Query–ready fetch client",作者为 mwmdgmb。原文链接见文末。需注意,该项目并非 TanStack 官方包。

tanstack-fetch 1.5.0 新增了 tanstack-fetch/vue 入口,为 Vue 3 与 Nuxt 提供 createFetchPlugin、useFetch 和 useSse 三个能力。它与 React 版本共用同一套客户端逻辑:返回数据、抛出 FetchError,并支持传入 TanStack Query 的 signal。

快速上手 ​

在应用入口创建客户端并注册插件:

typescript
import { createFetch } from 'tanstack-fetch'
import { createFetchPlugin, useFetch } from 'tanstack-fetch/vue'

const api = createFetch({ baseUrl: '/api' })
app.use(createFetchPlugin({ client: api }))

// 在组件中 —— useFetch 注入客户端(它本身不发起数据请求)
const api = useFetch()
await api.get('/users')

需要留意的是,useFetch 的职责是注入客户端实例,而非直接获取数据,这与 Nuxt 内置同名 API 的语义不同。

SSE 支持 ​

1.5.0 同时提供了 SSE(Server-Sent Events)相关的组合式函数:

typescript
import { createFetch } from 'tanstack-fetch/sse'
import { useSse } from 'tanstack-fetch/vue'

const api = createFetch({ plugins: ['sse-resume'] })
const { data, status, close } = useSse('/orders/stream', { client: api })
// status: connecting | connected | disconnected | error

status 会依次在 connecting、connected、disconnected、error 之间流转,便于在界面上呈现连接状态。

Nuxt 命名冲突 ​

由于 Nuxt 自身也导出了 useFetch,在 Nuxt 项目中使用时建议重命名导入,避免冲突:

typescript
import { useFetch as useFetchClient } from 'tanstack-fetch/vue'

打包体积(gzip) ​

入口体积
HTTP4.81KB
Vue0.78KB
SSE5.94KB

Vue 入口仅增加 0.78KB,对体积敏感的 Vue 3 项目较为友好。

相关链接 ​

原文链接 ​

https://dev.to/mwmdgmb/tanstack-fetch-150-vue-nuxt-helpers-for-a-tanstack-query-ready-fetch-client-52ag