Tahnik Mustasin
Tahnik Mustasin

Reputation: 2286

React Native: setState not updating immediately when logging in console

The state loggedIn here is updating perfectly because I am changing a button depending on the state. But whenever I am logging in console the value of logged in state immediately after changing it, it shows the opposite. So if the loggedIn just because true it still shows false in console. What is the reason behind it?

constructor(props) {
    super(props);
    this.state = {
        loggedIn: false
    }
}
changeState(val){
    this.setState({
        loggedIn: val
    });
    console.log(this.state.loggedIn);
}
render() {
    return (
        this.state.loggedIn ?  <Home_user onUpdate={(e) => this.changeState(e) } /> : <Auth onUpdate={(e) => this.changeState(e) } />
    )
}

Upvotes: 12

Views: 9717

Answers (1)

ZekeDroid
ZekeDroid

Reputation: 7209

Setting the state is asynchronous so you would almost always see the old value. Instead, use the callback the function provides:

this.setState({
    loggedIn: val
}, () => console.log(this.state.loggedIn));

This is particularly useful when you need to do something AFTER setting a new state.

Upvotes: 22

Related Questions