无法在react.js中设置状态

时间:2019-12-27 01:59:35

标签: reactjs

我正在使用Reactjs 16.10.2创建网站。但是我无法设置状态。

首先,我通过函数作为组件的道具:

  getStepFour = (data)=>{

      this.setState({
        tenCaThi:data.tenCaThi,
        ngayThi:data.ngayThi,
        gioBatDau:data.gioBatDau,
        gioKetKetThuc:data.gioKetKetThuc,
        phongThi:data.phongThi,
      });

      console.log('data receipt four: ', data);
      console.log('state after set: ', this.state.tenCaThi);
    }
<ChiaCaThi getStepFour={this.getStepFour}/>

然后我用它来像这样在ChiaCathi中获取数据:

componentWillUnmount = ()=>{

          const data = {
            tenCaThi:this.state.tenCaThi,
            ngayThi:this.state.ngayThi,
            gioBatDau:this.state.gioBatDau,
            gioKetKetThuc:this.state.gioKetKetThuc,
            phongThi:this.state.phongThi,
          }

          console.log('data in chiacathi: ', data)

          this.props.getStepFour(data);
      }

对于某些setState无法正常工作。设置后的状态为null。

img https://i.stack.imgur.com/AAhdD.png

1 个答案:

答案 0 :(得分:2)

这是因为setState()是异步的。根据{{​​3}}的状态,

  

setState()并不总是立即更新组件。它可能   批量更新或将更新推迟到以后。

此外,

  

将setState()视为请求而非直接命令   更新组件。为了获得更好的感知性能,React可能会   延迟它,然后在一次通过中更新几个组件。反应   不保证状态更改会立即应用。

如果您想了解更多有关为什么状态不立即更新的信息,请随时阅读React documentation,它在解释状态时非常深入。