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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數組push的問題

數組push的問題

慕少森 2018-08-23 15:49:12
代碼:this.state={    data:[] }this.arr=[]this.setState({     data:this.state.data.push(ele)    //此時提示push不是一個方法})this.arr.push(ele)    //正常運行雖然說push返回的是新數組的長度,但是this.arr確可以用push,而this.state.data確不可以用而只能用cancat,這是為什么?
查看完整描述

2 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

在React的渲染機制中,直接修改狀態值不能觸發重新渲染,只能通過調用setState的方式執行,這個方法是個異步方法,它將改動放到一個隊列中,React會合并這個隊列中的所有改動,判斷state是否發生改變,從而決定是否需要重新渲染。

對于數組類型的state,比如這里的data. React規定:state中包含的所有狀態都應該是不可變對象。這樣它在判斷狀態是否發生變化時就很簡單了-只需要判斷引用是否一樣即可。 而數組的concat方法就是創建了一個全新數組,React這才認為state.data發生變化了。


查看完整回答
反對 回復 2018-08-26
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

setState是用來更新State的,而你push也是為了更新數據(實際上這是不允許的,因為更新數據只能用setState)。

試一試這樣

this.setState({    data:[...this.state.data,ele]//setState里面設置新的值應該是賦值,而不是執行相關的函數})


查看完整回答
反對 回復 2018-08-26
  • 2 回答
  • 0 關注
  • 968 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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