原因:因为setState是异步的,改变值以后不能立即使用
setState之后,需要走完react-native生命周期,也就是走到render时,state的值 才会变成setState设置时的值
但是我们在开发过程中会需要setState即时改变值,那么怎么解决呢。
方法代码
this.setState({
id: 1
},()=>{
console.log(this.state.id)
})
如上,只需要在setState后面添加一个回调函数即可。
例:
function(){
const { modeTechList } = this.state;
let arr = modeTechList;
modeListDataAll.moreMdoe.forEach((item) => {
FavouriteData.down.forEach((element) => {
if (element == item.id) {
arr.push(item);
}
});
});
//方法一
this.setState({
modeTechList: [...arr]
});
//方法二
this.setState({
modeTechList: arr
}, () => {
console.log(this.state.modeTechList);
});
}