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

283
Visualizações
Actualización directa sobre el cambio de estado (React)

Por lo tanto, actualmente me enfrento a un problema común en el que el valor de un estado en mi componente de clase no cambia inmediatamente, sino solo después de renderizar/actualizar la página. Tengo un estado llamado 'autorización' al que quiero atribuir el valor falso al hacer clic en 'cerrar sesión'. Cuando un usuario presiona el botón 'cerrar sesión', quiero poner inmediatamente el estado de autenticación en 'falso' y luego redirigirlo a la página de inicio de sesión. Pero mi problema es que this.state.auth sigue siendo verdadero si no se produce una actualización/renderización. Tenga en cuenta que tiene que funcionar en un componente Clase como se muestra a continuación.

 import React, { Component, useEffect, useState} from 'react'; import { AuthContext } from '../Context/AuthContext'; class Home extends Component { state = { auth: true } handleLogOut = () => { localStorage.clear(); sessionStorage.clear(); this.setState({auth: false}); //Here it stays 'true' up until refresh ? this.props.history.push('/'); } render() { return ( <AuthContext.Provider value={this.state.auth}> <div> <button onClick = {this.handleLogOut}>Log out</button> </div> </AuthContext.Provider> ); } }; export default withRouter(Home);
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

this.setState( { auth: false }, () => this.props.history.push("/") );
about 4 years ago · Juan Pablo Isaza Relatório

0

En su caso específico, use componentDidUpdate .

Puedes usarlo como tal

 componentDidUpdate(prevProps, prevState) { console.log(this.state) // Logs new state. }

Sin embargo, le recomiendo que cambie a componentes funcionales, ya que componentDidUpdate y componentes similares basados en clases se consideran heredados.

Recurso

about 4 years ago · Juan Pablo Isaza Relatório

0

Creé una pequeña demostración de sandbox para ti aquí: https://codesandbox.io/s/a-simple-react-router-v4-tutorial-forked-uznym

Su función handleLogOut leerá auth como falso hasta que React vuelva a procesar el componente. Salvo cualquier error que pueda haber ocurrido, puede registrar el estado en el método de representación y ver lo que se lee allí.

 handleLogOut = () => { console.log(this.state.auth); localStorage.clear(); sessionStorage.clear(); this.setState({ auth: false }); //Here it stays 'true' up until refresh ? // this.props.history.push("/"); console.log(this.state.auth); }; render() { console.log(this.state.auth); ... }
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