this.setState()不能正常工作-react.js

Mai*_*sad -2 reactjs

componentWillMount() {
        let dID=this.props.match.params.datumID;
        this.setState({datumID: dID});
        console.log(dID);
        console.log(this.state.datumID);
    }
Run Code Online (Sandbox Code Playgroud)

我只是在尝试使用setState()方法。

但是问题是它不起作用。

这是我得到的输出:

First console.log() : 66
Second console.log(): null
Run Code Online (Sandbox Code Playgroud)

blu*_*eal 5

this.setState接受第二个参数,callback该参数在state成功更改后触发。

componentWillMount() {
        let dID=this.props.match.params.datumID;
         console.log(dID);
        this.setState({datumID: dID},()=>console.log(this.state.datumID)); 
    }

Run Code Online (Sandbox Code Playgroud)

旁注:将您的代码移至componentDidMount.

componentWillMount() 在安装发生之前立即调用。它在 render() 之前调用,因此在此方法中设置状态不会触发重新渲染。避免在此方法中引入任何副作用或订阅。


Ole*_*leg 5

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

如果需要基于先前的状态来设置状态,请阅读以下有关updater参数的信息。

    this.setState((prevState, props) => {
       return {datumID: props.match.params.datumID};
    });
Run Code Online (Sandbox Code Playgroud)