[React]setState自動觸發兩次


this.setState((prevState) => {
    console.log("entry")
    let selected = this.state.selected
    selected.push(id)
    return { selected }
})

會觸發控制台打印兩次entry

因為js對象都是淺拷貝,所以應該是直接修改state導致的結果。具體原理暫時不清楚。

解決:

使用深拷貝。當數據比較復雜的時候,下面的方法有bug。具體請搜索“js深拷貝”相關文章

this.setState((prevState) => {
    let selected = []
    prevState.selected.map((item) => { 
    selected.push(item)
    })
    selected.push(id)
    return { selected }
})    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM