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)
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() 之前调用,因此在此方法中设置状态不会触发重新渲染。避免在此方法中引入任何副作用或订阅。
将setState()视为请求而不是立即更新组件的命令。为了获得更好的感知性能,React可能会延迟它,然后在一次通过中更新几个组件。React不保证状态更改会立即应用。
如果需要基于先前的状态来设置状态,请阅读以下有关updater参数的信息。
this.setState((prevState, props) => {
return {datumID: props.match.params.datumID};
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |