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

91
Visualizações
¿Cuál es el punto de useCallback en referencia a useAuthProvider?

Estoy trabajando en un proyecto en el que useAuthProvider hace que useEffect se ejecute siempre. ¿Cómo evito esto?

 const authProvider = useAuthProvider(); const [loading, setLoading] = useState(true); const [loaded, setLoaded] = useState(false); const [roles, setRoles] = useState([]); useEffect(() => { authProvider() .then((data) => { setRoles(data); setLoaded(true); }) .catch((err) => { console.error(err); }) .finally(() => { setLoading(false); }); }, [authProvider]);

Cada vez que este enlace se ejecuta, authProvider es un objeto, por lo que la comparación superficial de useEffect siempre se evaluará como falsa.

He intentado simplemente tirar de la función que necesito también.

 const {getRoles} = useAuthProvider()

Sin embargo, la función getRoles también siempre se evaluará como falsa en las dependencias de useEffect porque useAuthProvider produce una nueva instancia de la función en cada procesamiento.

Parece que podría ser un buen caso de uso para useCallback. Pero nos encontramos exactamente con el mismo problema.

 const getRolesCallback = useCallback( () => authProvider.getRoles(), [authProvider] );

useCallback tiene exactamente la misma verificación de dependencia donde authProvider se evalúa como falso y, por lo tanto, useCallback actualiza la función y activa el useEffect nuevamente.

Estaba viendo algunos de los códigos de administración de reacción donde realmente usan useCallback de esta manera, pero no veo cómo está haciendo nada.

Esto es de /ra-core/src/auth/useGetPermissions.ts

 const useGetPermissions = (): GetPermissions => { const authProvider = useAuthProvider(); const getPermissions = useCallback( (params: any = {}) => authProvider.getPermissions(params), [authProvider] ); return authProvider ? getPermissions : getPermissionsWithoutProvider; };

¿Este useCallback no será inútil porque la dependencia authProvider se evaluará como falsa cada vez? ¿Me estoy perdiendo de algo?

Gracias por cualquier ayuda.

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

0

Por lo que veo, no necesita incluir authProvider en absoluto en sus dependencias, solo una matriz vacía [] servirá para su caso de uso. Una matriz vacía para el parámetro de dependencia (segundo) significa que el gancho solo se ejecutará en el renderizado inicial.

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