tRPC
你可以将 Jotai 与 tRPC 一起使用。
安装
要使用此扩展,你需要安装 jotai-trpc
,@trpc/client
和 @trpc/server
。
npm i jotai-trpc @trpc/client @trpc/server
使用方法
import { createTRPCJotai } from 'jotai-trpc'const trpc = createTRPCJotai<MyRouter>({links: [httpLink({url: myUrl,}),],})const idAtom = atom('foo')const queryAtom = trpc.bar.baz.atomWithQuery((get) => get(idAtom))
atomWithQuery
...atomWithQuery
创建了一个带有 "query" 的新 atom。它内部使用 Vanilla Client 的 ...query
程序。
import { atom, useAtom } from 'jotai'import { httpLink } from '@trpc/client'import { createTRPCJotai } from 'jotai-trpc'import { trpcPokemonUrl } from 'trpc-pokemon'import type { PokemonRouter } from 'trpc-pokemon'const trpc = createTRPCJotai<PokemonRouter>({links: [httpLink({url: trpcPokemonUrl,}),],})const NAMES = ['bulbasaur','ivysaur','venusaur','charmander','charmeleon','charizard','squirtle','wartortle','blastoise',]const nameAtom = atom(NAMES[0])const pokemonAtom = trpc.pokemon.byId.atomWithQuery((get) => get(nameAtom))const Pokemon = () => {const [data, refresh] = useAtom(pokemonAtom)return (<div><div>ID: {data.id}</div><div>高度: {data.height}</div><div>重量: {data.weight}</div><button onClick={refresh}>刷新</button></div>)}
示例
atomWithMutation
...atomWithMutation
创建了一个带有 "mutate" 的新 atom。它内部使用 Vanilla Client 的 ...mutate
程序。
FIXME: 添加代码示例和 codesandbox
atomWithSubscription
...atomWithSubscription
创建了一个带有 "subscribe" 的新 atom。它内部使用 Vanilla Client 的 ...subscribe
程序。
FIXME: 添加代码示例和 codesandbox