When does React's setState change the state

前端 未结 1 1624
感动是毒
感动是毒 2020-12-20 10:27

I have a function open() in a child component which calls the parent\'s function open() through props, and it could be multiple times

相关标签:
1条回答
  • 2020-12-20 11:02

    As the Duplicate answer by @MayankShukla indicates, setState is asynchronous,

    however Adding an explanation and a corrected approach

    In the below case:

    this.setState({numOpen: (++this.state.numOpen)});
    

    You are mutating the state directly and then setting the value and hence it works, but is not the right way to do it

    In the second case

    this.setState({numOpen: (this.state.numOpen + 1)});
    

    setState is adding the value to the current state as you experience it leads to unexpected behaviour due to its asynchronous nature.

    The correct way to do it is to use the prevState callback approach

     this.setState((prevState) => ({numOpen: (prevState.numOpen + 1)});
    
    0 讨论(0)
提交回复
热议问题