无法在 reactjs 中设置状态

IT技术 reactjs
2021-05-04 06:45:31

我正在使用 Reactjs 16.10.2 制作网站。但我不能设置状态。

首先,我将函数作为组件的props传递:

  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 不起作用。设置后的状态为空。

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

1个回答

那是因为setState()是异步的。根据状态React 文档

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

此外,

将 setState() 视为更新组件的请求而不是立即命令。为了更好的感知性能,React 可能会延迟它,然后一次更新多个组件。React 不保证立即应用状态更改。

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