Migration depuis l'ancien client React
Cette page a Ă©tĂ© traduite par PageTurner AI (bĂȘta). Non approuvĂ©e officiellement par le projet. Vous avez trouvĂ© une erreur ? Signaler un problĂšme â
Plusieurs approches de migration sont possibles. Cette nouvelle bibliothĂšque reprĂ©sente un changement significatif par rapport Ă l'ancien client, donc nous n'attendons pas que quiconque effectue la transition en une seule fois. Vous aurez probablement intĂ©rĂȘt Ă combiner diffĂ©rentes mĂ©thodes...
Migration via codemodâ
Le codemod est en cours de développement et nous recherchons de l'aide pour l'améliorer. Si vous souhaitez contribuer, consultez le commentaire de Julius ici.
Nous développons un codemod pour faciliter la migration de votre codebase existant vers le nouveau client. Il est déjà utilisable mais nous avons besoin de vos retours et contributions pour l'améliorer. Les codemods sont complexes à perfectionner, c'est pourquoi nous comptons sur votre aide pour le rendre aussi efficace que possible.
Exécutez notre CLI de mise à jour :
shnpx @trpc/upgrade
shnpx @trpc/upgrade
Lorsque vous y ĂȘtes invitĂ©, sĂ©lectionnez les transformations Migrate Hooks to xxxOptions API et Migrate context provider setup.
Migration progressiveâ
Les nouveaux et anciens clients sont compatibles entre eux et peuvent coexister dans la mĂȘme application. Vous pouvez donc commencer la migration en utilisant le nouveau client dans les nouvelles parties de votre application, puis migrer progressivement l'existant Ă votre rythme. Point crucial : les clĂ©s de requĂȘte (Query Keys) sont identiques, ce qui permet d'utiliser simultanĂ©ment les deux clients tout en bĂ©nĂ©ficiant du cache de TanStack Query.
Migration des requĂȘtesâ
Une requĂȘte classique ressemblait Ă ceci
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'}
et devient
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'}
Migration des invalidations et autres utilisations de QueryClientâ
Une requĂȘte classique ressemblait Ă ceci
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' });}}
et devient
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' }),);}}
Ce principe s'applique à toute utilisation de QueryClient : au lieu d'utiliser useUtils de tRPC, vous pouvez désormais suivre directement la documentation de TanStack.
Migration des mutationsâ
Une mutation classique pouvait ressembler Ă ceci
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' });}
et devient
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' });}