亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

list賦值

拷貝list,為何要展開后再賦值,直接=this.state.list不可以嗎?

正在回答

6 回答

如果從正確性上來說,用push是不對的,state狀態強調的是immutable,所以建議一定要拷貝一個副本來操作。這是偏底層的東西了

1 回復 有任何疑惑可以回復我~
#1

qiaoyang

const list = [...this.state.list]展開賦值與直接const list = this.state.list賦值效果上并沒有區別,老師的意思是后面這種賦值不算拷貝副本么?
2018-08-14 回復 有任何疑惑可以回復我~
#2

慕萊塢5310431 回復 qiaoyang

const list = this.state.list這種肯定不是拷貝了,引用類型直接賦值只是多了一個引用,指向的還是同一個內存,擴展運算符會新開一個內存
2018-08-21 回復 有任何疑惑可以回復我~
#3

qiaoyang 回復 慕萊塢5310431

明白了,謝謝
2018-08-22 回復 有任何疑惑可以回復我~

還是沒懂耶,直接操作原有state狀態為什么會有性能問題呢,相比之下拷貝一個副本還要多開辟一個空間呢

0 回復 有任何疑惑可以回復我~

不要說些黑話,哈哈

0 回復 有任何疑惑可以回復我~

為什么React這么麻煩。。

1 回復 有任何疑惑可以回復我~

要新增一個數據,實現的方式很多,展開是一種方式,直接使用push方法也是一樣的

0 回復 有任何疑惑可以回復我~
#1

HoSalt

是為了獲得一個新的對象,用slice,concat等可以達到相同的效果,展開只是一種方式
2018-07-19 回復 有任何疑惑可以回復我~

js深淺拷貝的問題。

比如:

let?obj1?=?{
??age:?1
};
let?obj2?=?obj1;
obj2.age?=?2;
console.log(obj1.age);?//?2
1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號