tRPC
你可以将 Jotai 与 tRPC 一起使用。
你需要安装 jotai-trpc、@trpc/client 和 @trpc/server 来使用此扩展。
npm install jotai-trpc @trpc/client @trpc/serverimport { 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
Section titled “atomWithQuery”...atomWithQuery 创建一个带有 “query” 的新原子。它内部使用 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>Height: {data.height}</div> <div>Weight: {data.weight}</div> <button onClick={refresh}>Refresh</button> </div> )}atomWithMutation
Section titled “atomWithMutation”...atomWithMutation 创建一个带有 “mutate” 的新原子。它内部使用 Vanilla Client 的 ...mutate 过程。
FIXME: add code example and codesandbox
atomWithSubscription
Section titled “atomWithSubscription”...atomWithSubscription 创建一个带有 “subscribe” 的新原子。它内部使用 Vanilla Client 的 ...subscribe 过程。
FIXME: add code example and codesandbox