RN使用setState不生效的解决方法

原因:因为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);
    });    
}

你可能感兴趣的:(React,Native,javascript,前端,react,native)