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

275
Vistas
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 Respuestas
Responde la pregunta

0

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

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 Denunciar

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 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