#APRENDE React Query DESDE CERO: Paginaci...

1 messages · Page 1 of 1 (latest)

wheat rapids
#

En palabras simples alguien sabe como mutar los estados para que se haga el renderizado 😦

wheat rapids
#

por si quieren analizar mejor :c

frail mist
#

Hola

#

revisando el repo a ver...

#

pregunta, si simplemente dejas el onSettled, y comentas el onMutate

#

se actualiza tu listado?

frail mist
#

@wheat rapids

wheat rapids
#

hu perdoname ahora si

wheat rapids
frail mist
#

no

wheat rapids
#

el onsettled es como el finally de las promesas que se ejecuta siempre

frail mist
#

la mutacion en la bd, se produce con el mutationFn

#

onMutate es solo para hacer cosas adicionales al iniciar una mutación

wheat rapids
#

entonces tu dices hacer la eliminación en el onSttled?

frail mist
#

solo digo que comentes un momento onMutate a ver que pasa

#

ya que como se está haciendo el invalidateQueries

#

debería refrescarse el listado

wheat rapids
#

Como comento en bloque?

frail mist
#

quiero partir de allí a ver si eso funciona primeramente

#

quitalo

wheat rapids
#

okas

#

me quedo asi :

#

como podria saber si la lista se actualiza?

frail mist
#

se debería quitar el elemento eliminado de la lista no?

#

esa sería la forma de saber

wheat rapids
#

Pero para quitar el elemento de la lista deberia pasarle el email y hacer el .filter de users

#

osea ten en cuenta que "deleteUsers" solo simula la eliminación de la base de datos estoy utilizando una API

frail mist
#

vale, esa parte si no lo había tenido en cuenta

#

de todas formas, pregunto, cuando "eliminas" el user, lanza de nuevo una petición consultando los usuarios?

wheat rapids
#

Es mas facil de entender lo que hago es un rollback creo que se llama mutación optimista le muestro al usuario que se agrego de inmediato mientras simulo la peticion a la base de datos con la API con la peticion "DELETE"

frail mist
#

es decir, el invalidate si funciona?

#

Si, tengo claro a lo que quieres llegar, pero como no funciona, la idea es partir de lo básico

wheat rapids
frail mist
#

vale, dame un segundo que salgo de una reu

wheat rapids
#

si obvio no te preocupes etiquetame y asi vere que tengo un mensaje estare averiguando por todas partes del internet (gpt no me ayudo 😦 )

frail mist
#

@wheat rapids bueno lo primero es que el hecho de que uses useInfiniteQuery complica un poco las cosas

#

ya que la data que maneja este hook está particionada

#

lo ideal es que al modificarla, lo hagas sobre la particion correcta

wheat rapids
#

agrege esta linea me da false

wheat rapids
frail mist
#

Si es que no está mal usarlo, digo que hacer los optimistic updates se hacen más complejos con ese approach

wheat rapids
#

hu entiendo, estaba pensando que tal vez deberia modificar la key de forma ["users", pagaParam] indicando la pagina pero.. no tiene sentido ya que estoy haciendo un "infinite scroll" y los paso todo a un arreglo de 1 dimension

frail mist
#

de hecho en ese link hablan del tema

#

que es engorroso

wheat rapids
#

lo leere no se mucho ingles si que lo voy traduciendo de apoco jaja

#

(para aprender)

frail mist
#

si va

wheat rapids
#

pero tengo la consulta lo que hicieron fue :

#
const newPages = oldData.pages.map(
    (page: { results: Message[] }) => ({
      ...page,
      results: page.results.map((oldMessage) =>
        message.id === id ? newMessage : oldMessage
      ),
    })
  );
#

para recorrer las distintas paginas

#

yo en si "no tengo paginas" con el infinite scroll las paso a 1 sola dimension

#

aqui recorren la matriz hasta encontrar el id

frail mist
#

tu las pasas a una dimencion, pero internamente la data del query esta en varias, y debe mantenerse asi

#

porque internamente el tiene un contador de paginas pageParam, y no se si cuando actualizas la data con una sola pagina, react-query se enreda

#

porque dice, yo he cargado 3 paginas y mi contador tiene un 3, pero ahora en mi data solo hay una pagina de datos

wheat rapids
#

hmm entiendo y a la vez no, entiendo lo que dices de mantener la data pero no logro encontrar la logica para implementarlo dentro de mi codigo, incluso me confundo que pasa si se borra toda una pagina? react-query se confunde? por que la logica que intento buscar es que tendra cargada 3 paginas pero existen 2

frail mist
#

es que precisamente ese es el punto, es engorroso este tema

#

de todas formas no tengo experiencia mutando la data de useInfiniteQuery

#

quizas esto sirva

#
{
   pages: [{ users: userFilters }],
   pageParams: [aca pones como que solo existe una pagina],
}
wheat rapids
#

en pageParams pondria 1 pagina?

#
{
   pages: [{ users: userFilters }],
   pageParams: [1],
}
frail mist
#

no se que debes poner la verdad

wheat rapids
#

vale muchas gracias igualmente seguire curioseando esto no me ganará jajaja

frail mist
#

puedes hacer console.log a (data.pageParams) de lo que retorna useInfiniteQuery?

wheat rapids
#

es la pagina que esta te mando una foto de inmediato

frail mist
#

un uno o un array con un uno?

wheat rapids
#

1 creo

#

deja ver

frail mist
#

la idea es que le pongas lo mismo que tiene cuando es una sola pagina lo que lleva cargado

#

usas react query 5

wheat rapids
#

un arreglo de 1

#

con el valor 1

frail mist
#

vale, ese mismo valor le debes dar

#

en react query si esto ya no funciona const previusUsers = queryClient.getQueryData(["users"]);

wheat rapids
#

asi mismo lo tengo no?

frail mist
#

ahora es siempre en formato de objeto los parametros: const previusUsers = queryClient.getQueryData({ queryKey: ["users"] });

frail mist
wheat rapids
#

por defecto detecta solo tiene un parametro

frail mist
#

eso si tienes una sola página si tienes varias cargadas el resultado será { ..., pageParams: [[1, 2, 3]] }

#

pero usas react.query 5 o que versión?

wheat rapids
#

"@tanstack/react-query": "^5.17.12",

frail mist
#

bueno, tienes razon, getQueryData si que recibe directo el queryKey

wheat rapids
#

ahi lo cambie pero sigue sin funcionar

wheat rapids
frail mist
#

ese console.log de que es?

#

en que parte lo haces?

#

Si tienes tiempo lo vemos un canal de voz, tu me dices

wheat rapids
wheat rapids
frail mist
#

dale, si va

wheat rapids
#

ya nos vemos en 1 hora mas ire rapido entonces hacer las compras quiero ver este problema lamento las molestias 😦

frail mist
#

vale

#

jajaja dale si va

wheat rapids
#

llegueee

#

@frail mist avisame cuando puefas

#

lamento la demora :c

frail mist
#

hola

#

@wheat rapids

wheat rapids
#

hola

#

estare en la sala 2