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