Quiero actualizar un estado en ComponentDidMount pero la función setState no se ejecuta
ComponentDidMount() { if (this.props.location.search.includes("?token")) { const email = getQueryVariable(this.props.location.search, "email"); const token = getQueryVariable(this.props.location.search, "token"); if (this.state.showValidationModal === false) { console.log("Before",this.state.showValidationModal); this.setState({ showValidationModal:true }) console.log("After",this.state.showValidationModal); } } } cuando la aplicación se monta, el resultado de ambos registros showValidationModal es false
setState es una operación asíncrona, no actualiza el estado inmediatamente, pero la devolución de llamada de setState tiene el valor de última instancia del estado, entonces.
ComponentDidMount() { if (this.props.location.search.includes("?token")) { const email = getQueryVariable(this.props.location.search, "email"); const token = getQueryVariable(this.props.location.search, "token"); if (this.state.showValidationModal === false) { console.log("Before",this.state.showValidationModal); this.setState({ showValidationModal:true }) // here you get the latest value of showValidationModal state this.setState(prevState => console.log(prevState.showValidationModal)) // here you get the old value. console.log("After",this.state.showValidationModal); } } }