一、componentDidMount状态问题
使用React开发进行查询时遇到的实际问题,在componentDidMount中获取到state后需要setState更新字段查询,代码如下
理论上在setState后,随后的searcgAjax()中searchValue字段值应该发生改变,实际传的值依然是之前的。
二、解决
this.setState使用回调方法后完美解决
componentDidMount() {
var hash = window.location.hash.split("/")[3];
this.setState({
searchValue:hash
},() =>{
this.searchAjax();
})
}
三、原因
在React官网看到了关于setState的详细介绍
this.setSate是类似异步方法,实际使用时会延迟,不能立即更新方法,提供了两个解决办法。
- componentDidUpdate 中调用state
- 使用callback回调方法