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

124
Visualizações
¿Por qué se muestra el botón solo al actualizar la página?

Quiero que el botón de cierre de sesión aparezca solo cuando el usuario haya iniciado sesión. Ahora funciona, pero no como debería.

Con el siguiente código, el botón de cierre de sesión aparece cuando el usuario inicia sesión solo si la página se actualizó. Esto se debe a que al cargar el componente <App/> , el componente <Navbar/> se montó junto con él.

Pero, ¿cómo puedo hacer que incluso si <Navbar/> está cargado, todavía puede ser posible manipular cuándo puede aparecer el botón en función de si el token de autenticación no es nulo?

Aquí está App.js:

 const App = () => { let [logoutButtonFlag, setLogoutButtonFlag] = useState(false); let authToken = localStorage.getItem('token'); useEffect(() => { if (authToken !== null) { setLogoutButtonFlag(true); } }, [authToken]); return ( <> <Navbar logoutButtonFlag={logoutButtonFlag}/> </> ); } export default App;

Aquí está Navbar.js:

 const Navbar = (props) => { return ( {!props.logoutButtonFlag ? null : <button className="learn-more">Logout</button>} ); }; export default Navbar;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

está proporcionando una variable que no es de estado a la lista de estados que useEffect hook 'escucha', por lo que no se ejecutará nuevamente después de cambiar su valor.

 const [authToken, setAuthToken] = useState(localStorage.getItem('token'));

y cuando actualice el "token" de almacenamiento local, también actualice authToken al mismo valor. y su useEffect se reactivará en el cambio de authToken porque ahora es un estado

 useEffect(() => { if (authToken !== null) { setLogoutButtonFlag(true); } }, [authToken]);

La razón por la que solo se actualizó al actualizar se debe a que el valor del "token" en el almacenamiento local ya se modificó.

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