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

195
Vistas
No se puede actualizar un componente mientras se renderiza un componente diferente

Estoy usando el gancho useAuth para mi authContext , de modo que puedo usar el gancho para establecer estados globales para mis componentes.

Ahora, estoy tratando de navegar a la página '/' si el usuario no inició sesión, y también mostrar un requireLoginAlert al usuario en la página '/' después de que el usuario fue redirigido. Sin embargo, recibí el siguiente error cuando intento incluir la setRequireLoginAlert(true) en requireAuth.js .

 Warning: Cannot update a component (`AuthProvider`) while rendering a different component (`RequireAuth`). To locate the bad setState() call inside `RequireAuth`

Mi requireAuth.js :

 const RequireAuth = () => { const { auth, setRequireLoginAlert } = useAuth(); const location = useLocation(); return ( auth?.user ? <Outlet /> : <Navigate to='/' state={{ from: location }} replace /> && setRequireLoginAlert(true) ); }; export default RequireAuth;

Mi AuthContext.js

 const AuthContext = createContext({}); export const AuthProvider = ({ children }) => { const [auth, setAuth] = useState({}); const [requireLoginAlert, setRequireLoginAlert] = useState(false); return ( <AuthContext.Provider value={{ auth, setAuth, requireLoginAlert, setRequireLoginAlert }}> {children} </AuthContext.Provider> ); }; export default AuthContext;

Intenté usar useEffect para mostrar la alerta cada vez que la location ha cambiado, pero de esta manera la alerta seguirá apareciendo cada vez que vaya a otras páginas, lo cual no es lo ideal. Necesito un disparador para cambiar el estado requireLoginAlert después de que el usuario fue redirigido sin error.

Siéntase libre de dejar un comentario si tiene alguna idea. Muchas gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Creo que estabas en el buen camino con el enfoque useEffect.

De hecho, ha utilizado la ubicación en la matriz de dependencias, pero también debe incluir una condición basada en la página actual para que no se llame a requireLoginAlert cada vez.

¿Has probado algo como el siguiente fragmento de código?

 useEffect( () => auth?.user && location === "/" && setRequireLoginAlert(true), [auth?.user, location] );

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