我们在给state状态赋值的时候一般都会使用

this.setState({
    name:newName
})

但是有时候我们会发现值的更新滞后,比如我们刚刚更新的name值,但是页面显示的还是以前的name,出现这种情况的原因就是 setState() 有时候是异步的

React 为了优化性能,有可能会将多个 setState() 调用合并为一次更新。

所以我们需要用到回调函数来解决

this.setState({
    name:newName
},fucntion(){
    //在这里进行一些与name有关的业务逻辑处理
    //这里的name值是最新的
    console.log(name)
})

当然有些时候我们仅仅就是为了更新页面数据信息,显然上面的方法不适用,这时我们使用下面的方法

它接收一个函数,而不是一个对象。该函数接收前一个状态值作为第 1 个参数, 并将更新后的值作为第 2 个参数

this.setState((prevState, props) => ({
    name: newName
}));

这样更新的name就是同步的了,当然此处也可以不使用Arrow Function。

【右上角点个赞,谢谢】

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐