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

320
Vistas
¿Cómo establecer el estado al usar AppContext ()?

cuando intento configurar el estado userHasAuthenticated en la función de inicio de sesión con true, ¿devuelve false en console.log(isAuthenticated) (sigue igual en App.js 'false')?

y quiero usarlo en Home Component el mismo problema 'falso';

 //----------------------in App.js---------------------- var [isAuthenticated, userHasAuthenticated] = useState('false'); <AppContext.Provider value={{ isAuthenticated, userHasAuthenticated }}> //... </AppContext.Provider> //-------------- in Login.js--------------------- const { isAuthenticated,userHasAuthenticated } = useAppContext(); const login = () => { userHasAuthenticated('true'); console.log(isAuthenticated); // false ? window.location.assign("/Home"); } // ---------------------in Home.js------------------------ const { isAuthenticated,userHasAuthenticated } = useAppContext(); console.log(isAuthenticated);// --->false ? //-------------- in context.js--------------------- export const AppContext = createContext(null); export function useAppContext() { return useContext(AppContext); }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En su mayor parte, este código parece correcto, lo único que está mal aquí por lo que puedo decir es que está intentando consolar. isAuthenticated console.log después de configurarlo. Esto no funcionará porque la configuración de estado es asíncrona, lo que significa que no puede esperar que se actualice de inmediato.

Podrías probar esto para ver si el estado cambia:

 //-------------- in Login.js--------------------- const { isAuthenticated, userHasAuthenticated } = useAppContext(); useEffect(() => { console.log(isAuthenticated); // this should be "true" after `login` has run }, [isAuthenticated]); const login = () => { userHasAuthenticated('true'); console.log(isAuthenticated); // this should be "false" window.location.assign("/Home"); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

recuerde que sus datos de su Contexto están en MEMORIA, cada vez que actualice su Aplicación, App.js será llamado y renderizado nuevamente, por lo que llamará a su contexto y se creará una vez más como falso. Es por eso que está obteniendo 'FALSO' cuando llama isAuthenticated excepto en la página de inicio de sesión

Es mejor que guarde sus datos en el almacenamiento local y los obtenga desde allí cada vez que actualice o navegue por su aplicación, y eso mantendrá toda la información guardada en su gancho useAppContext().

Aplicación.js:

 const [isAuthenticated, userHasAuthenticated] = useState(localStorage.getItem('user') || 'false');

Prueba esto en tu Login.js:

 export const Login = (props) => { const {isAuthenticated, userHasAuthenticated} = useAppContext(); useEffect(() => { userHasAuthenticated('true'); localStorage.setItem('user', 'true'); // set user to authenticated }, []); return ( <> <h1>isAuthenticated = {isAuthenticated}</h1> </> );

};

Y luego obtenga los datos de su useAppContext():

 export const Home = (props) => { const { isAuthenticated } = useAppContext(); return ( <> <h1>isAuthenticated = {isAuthenticated}</h1> </> );

};

Resultado:

ingrese la descripción de la imagen aquí

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