只更新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