只更新state中对象中的某一项值,setState中的回调


只更新state中对象中的某一项值

要用到Object.assign()方法
例子:

this.state = {
count: [
    { num: 0, title: "用户总数", background: "#66ef66" },
    { num: 0, title: "商品总数", background: "#f9cb4a" },
    { num: 0, title: "订单总数", background: "#f93232" }
]
}

想要更新count数组每一项中第一个对象中的num值

this.setState({
    count:[
              Object.assign({},this.state.count[0],{num:1}),
              Object.assign({},this.state.count[1],{num:2}),
              Object.assign({},this.state.count[2],{num:3})
    ]
})

setState中的回调

问题:

由于有时候setState是异步操作的,这就导致了,setState时获取state值时有可能还没更新。
例子:

this.state ={value:1}
this.setState({
    value: 2
})
console.log(this.state.value)  // 1

解决方案

setState的参数:setState(updater, [callback])
用setState的回调方法。

this.state ={value:1}
this.setState({
    value: 2
}, () => {
    console.log(this.state.value) //2
})

想看更多博客,请到本 博客


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM