Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

270
Vistas
La reversión al estado anterior no funciona en la consulta de reacción (actualizaciones optimistas)

Estoy usando la consulta de reacción de actualización optimista, aquí estoy aumentando los seguidores y además actualizo el siguiente estado justo debajo de mi código:

Todo funciona como debería, pero cuando aparece el error, la instantánea anterior y los datos de usuario anteriores no mantienen el valor anterior, devuelven una y otra vez los datos mutados o actualizados en el bloque de error, se supone que devuelve el estado anterior, pero no es así. , por favor, hágame saber lo que estoy haciendo mal aquí.

 const callFavoriteUserMutation = useMutation(favoriteUser, { onMutate: async _id => { const previousSnapshot = queryClient.getQueryData(`${id}userdetail`); const previousUserData = queryClient.getQueryData('getUserInfo'); queryClient.setQueryData(`${id}userdetail`, (oldData: any) => { const updatedData = {...oldData}; updatedData.stats.followers += 1; updatedData.following = true; return updatedData; }); queryClient.setQueryData('getUserInfo', (oldUserData: any) => { const updatedData = {...oldUserData}; updatedData.stats.following += 1; return updatedData; }); return {previousSnapshot, previousUserData}; }, onError: (error_code, _id, context: any) => { queryClient.setQueryData(`${id}userdetail`, context.previousSnapshot); queryClient.setQueryData('getUserInfo', context.previousUserData); setFollowing(context.previousSnapshot.following); setNoOfFollowers(context.previousSnapshot.stats?.followers); setNoOfFollowing(context.previousSnapshot?.stats?.following); }, });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

es porque está mutando los datos originales. Solo creas una copia superficial:

 const updatedData = {...oldData};

pero luego mutan las propiedades profundas:

 updatedData.stats.followers += 1; updatedData.following = true;

actualice inmutablemente, o cree una copia profunda, o use algo como immer si prefiere la sintaxis mutable.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda