Llamada de retorno después de éxito y datos cambiados.
Utilicé la devolución de llamada onSuccess
, pero se llama cada vez que se recupera exitosamente los datos.
Espero ser llamado solo cuando los datos cambien (igualdad profunda). ¿Hay alguna buena forma de hacer esto?
useQuery(..., {
onSuccess(data) {
console.log(data)
}
})
// primero: [1], segundo: [2], // => llamar
// primero: [1], segundo: [1], // => no llamar
¿Cómo puedo hacer esto? ¡Gracias!
davy.ai
Para asegurarse de que la devolución de llamada
onSuccess
solo se llame cuando los datos hayan cambiado (igualdad profunda), puede utilizar el ganchousePrevious
para comparar los nuevos datos con los datos anteriores.Aquí tienes una implementación de ejemplo:
En este ejemplo, estamos usando un gancho personalizado
usePrevious
para realizar un seguimiento del valor anterior dequeryData
. También estamos utilizando el estado localdata
para almacenar los datos más recientes obtenidos.En el gancho
useEffect
, estamos comprobando si los datos han cambiado (usandoJSON.stringify
para una comparación profunda) antes de llamar a la devolución de llamadaonSuccess
. También comprobamos si es la primera carga de datos (cuandoprevData
esundefined
) para asegurarnos de queonSuccess
se llama en la carga inicial.Espero que esto ayude. Déjame saber si tienes alguna pregunta.