Migrera från den klassiska React-klienten
Denna sida har översatts av PageTurner AI (beta). Inte officiellt godkänd av projektet. Hittade du ett fel? Rapportera problem →
Det finns flera tillvägagångssätt för migrering, och detta bibliotek skiljer sig avsevärt från den klassiska klienten så vi förväntar oss inte att någon gör migreringen på en gång. Men du kommer förmodligen vilja prova en kombination av...
Migrering med codemod
Codemoden är under utveckling och vi söker hjälp med att förbättra den. Om du är intresserad av att bidra till codemoden, se Julius kommentar här.
Vi arbetar på en codemod för att hjälpa dig migrera din befintliga kodbas till den nya klienten. Den är redan tillgänglig att testa men vi behöver din feedback och dina bidrag för att förbättra den. Codemods är mycket knepiga att få rätt så vi söker din hjälp för att göra den så effektiv som möjligt.
Kör vårt uppgraderings-CLI:
shnpx @trpc/upgrade
shnpx @trpc/upgrade
När du uppmanas, välj transformationerna Migrate Hooks to xxxOptions API och Migrate context provider setup.
Gradvis migrering
De nya och klassiska klienterna är kompatibla med varandra och kan samexistera i samma applikation. Det innebär att du kan börja migrera genom att använda den nya klienten i nya delar av din applikation, och gradvis migrera befintlig användning när det passar. Viktigast av allt är att Query Keys är identiska, vilket innebär att du kan använda både den nya och klassiska klienten samtidigt och fortfarande förlita dig på TanStack Querys cachning.
Migrera queries
En klassisk query skulle se ut så här
tsximport { trpc } from './trpc';function Users() {const greetingQuery = trpc.greeting.useQuery({ name: 'Jerry' });// greetingQuery.data === 'Hello Jerry'}
tsximport { trpc } from './trpc';function Users() {const greetingQuery = trpc.greeting.useQuery({ name: 'Jerry' });// greetingQuery.data === 'Hello Jerry'}
och ändras till
tsximport { useQuery } from '@tanstack/react-query';import { useTRPC } from './trpc';function Users() {const trpc = useTRPC();const greetingQuery = useQuery(trpc.greeting.queryOptions({ name: 'Jerry' }));// greetingQuery.data === 'Hello Jerry'}
tsximport { useQuery } from '@tanstack/react-query';import { useTRPC } from './trpc';function Users() {const trpc = useTRPC();const greetingQuery = useQuery(trpc.greeting.queryOptions({ name: 'Jerry' }));// greetingQuery.data === 'Hello Jerry'}
Migrera invalideringar och andra QueryClient-användningar
En klassisk query skulle se ut så här
tsximport { trpc } from './trpc';function Users() {const utils = trpc.useUtils();async function invalidateGreeting() {await utils.greeting.invalidate({ name: 'Jerry' });}}
tsximport { trpc } from './trpc';function Users() {const utils = trpc.useUtils();async function invalidateGreeting() {await utils.greeting.invalidate({ name: 'Jerry' });}}
och ändras till
tsximport { useQuery, useQueryClient } from '@tanstack/react-query';import { useTRPC } from './trpc';function Users() {const trpc = useTRPC();const queryClient = useQueryClient();async function invalidateGreeting() {await queryClient.invalidateQueries(trpc.greeting.queryFilter({ name: 'Jerry' }),);}}
tsximport { useQuery, useQueryClient } from '@tanstack/react-query';import { useTRPC } from './trpc';function Users() {const trpc = useTRPC();const queryClient = useQueryClient();async function invalidateGreeting() {await queryClient.invalidateQueries(trpc.greeting.queryFilter({ name: 'Jerry' }),);}}
Samma sak gäller för alla QueryClient-användningar - istället för att använda tRPC:s useUtils kan du nu följa TanStack-dokumentationen direkt
Migrera mutationer
En klassisk mutation kan se ut så här
tsximport { trpc } from './trpc';function Users() {const createUserMutation = trpc.createUser.useMutation();createUserMutation.mutate({ name: 'Jerry' });}
tsximport { trpc } from './trpc';function Users() {const createUserMutation = trpc.createUser.useMutation();createUserMutation.mutate({ name: 'Jerry' });}
och ändras till
tsximport { useMutation } from '@tanstack/react-query';import { useTRPC } from './trpc';function Users() {const trpc = useTRPC();const createUserMutation = useMutation(trpc.createUser.mutationOptions());createUserMutation.mutate({ name: 'Jerry' });}
tsximport { useMutation } from '@tanstack/react-query';import { useTRPC } from './trpc';function Users() {const trpc = useTRPC();const createUserMutation = useMutation(trpc.createUser.mutationOptions());createUserMutation.mutate({ name: 'Jerry' });}