Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

285
Visualizações
¿Cómo hago consultas dependientes en react-query?

Tengo un componente llamado Sidebar.tsx que está obteniendo algunos datos aquí, pero solo quiero obtener niveles solo si studentId está disponible. Revisé las consultas dependientes en la documentación de la consulta de react-query . Lo apliqué en mi código pero parece que no funciona. Esto es lo que hice.

En primer lugar, también obtuve el studentId de estudiante de una API, así es como se ve:

 const studentId = intakeProgramStore.getStudentShipByUserId(authUser?.id) .data?.data.data[0];

Ahora otra función para obtener programas.

 class IntakeProgramStore{ getIntakeProgramsByStudent(studentId: string) { return useQuery( ['intakeProgram/studentId', studentId], () => intakeProgramService.getIntakeProgramsByStudent(studentId), { enabled: !!studentId }, ); } } export const intakeStore = new IntakeProgramStore();

Esta función se encuentra en stores/intake.store.ts y lo que hace es que, cuando se llama, llama a un método de servicio llamado intakeProgramService.getIntakeProgramsByStudent que también se importa en la parte superior y funciona bien como se esperaba. El problema que tengo aquí es que está llamando a ese servicio incluso si studentId no está definido, mientras que se suponía que lo llamaría cuando tuviera un valor.

Así es como lo llamo dentro Sidebar.tsx que es mi componente de interfaz de usuario

 const programs = intakeProgramStore.getIntakeProgramsByStudent(student.id) .data?.data.data[0];

Moví el código que estaba en el archivo stores/intake.store.ts a Sidebar.tsx y ahora funcionó bien, pero no sé por qué. Así es como se ve

 const programs = useQuery( ['intakeProgram/studentId', student?.id], () => intakeProgramService.getIntakeProgramsByStudent(student?.id), { enabled: !!student

No estoy seguro de por qué no funciona cuando busco dentro de la tienda, pero funciona cuando lo hago en el componente de la interfaz de usuario.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

En general, su código parece correcto. Lo único que puedo ver es que en el primer ejemplo, está llamando a useQuery dentro de una función llamada getIntakeProgramsByStudent , que es una llamada de gancho no válida. Los ganchos solo se pueden llamar:

  • por componentes reactivos funcionales
  • dentro de ganchos personalizados , que son funciones que comienzan con el use... .

vea también las reglas de la documentación de reacción de ganchos .

Un enlace personalizado para su llamada useQuery sería:

 export const useIntakeProgramsByStudent(studentId: string) { return useQuery( ['intakeProgram/studentId', studentId], () => intakeProgramService.getIntakeProgramsByStudent(studentId), { enabled: !!studentId }, ); }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda