在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ react數(shù)組內(nèi)取出的對象發(fā)生變化,會影響原數(shù)組

react數(shù)組內(nèi)取出的對象發(fā)生變化,會影響原數(shù)組

定義一個數(shù)組

this.state = {
    list: [],
    obj: {}
}
const list = [
    {id: 1},
    {id: 2}
]
this.setState({
    list
})

取出一個對象

const obj = list[0]
this.setState({
    obj
})

修改對象,修改值,然后setState

obj.id = 3
this.setState({
    obj
})

問題來了,請問原因?

  • 像這樣修改,list中obj值也會發(fā)生變化,會成這樣
[
    {id: 3},
    {id: 2}
]
  • 即使把obj和list切斷,如下操作,修改obj,list的值依然會變化
const list1 = [].concat(list)
const obj = list1[0]
// 然后修改obj,list中obj的值依然會變
回答
編輯回答
別硬撐

js對象的引用了解一下

2018年8月1日 23:47
編輯回答
愛礙唉

這個不是react的鍋,js本來就是這樣,對象是引用類型
可以這么做

// 第一種方式
const obj ={...list[0]}
// 第二種方式
const obj =Object.assign({},list[0])

obj.id = 3
this.setState({
    obj
})

或者immutable了解一下

2017年11月28日 10:55