2 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
setState是用來更新State的,而你push也是為了更新數(shù)據(jù)(實(shí)際上這是不允許的,因?yàn)楦聰?shù)據(jù)只能用setState)。
試一試這樣
this.setState({ data:[...this.state.data,ele]//setState里面設(shè)置新的值應(yīng)該是賦值,而不是執(zhí)行相關(guān)的函數(shù) })

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
在React的渲染機(jī)制中,直接修改狀態(tài)值不能觸發(fā)重新渲染,只能通過調(diào)用setState的方式執(zhí)行,這個(gè)方法是個(gè)異步方法,它將改動(dòng)放到一個(gè)隊(duì)列中,React會(huì)合并這個(gè)隊(duì)列中的所有改動(dòng),判斷state是否發(fā)生改變,從而決定是否需要重新渲染。
對(duì)于數(shù)組類型的state,比如這里的data. React規(guī)定:state中包含的所有狀態(tài)都應(yīng)該是不可變對(duì)象。這樣它在判斷狀態(tài)是否發(fā)生變化時(shí)就很簡(jiǎn)單了-只需要判斷引用是否一樣即可。 而數(shù)組的concat方法就是創(chuàng)建了一個(gè)全新數(shù)組,React這才認(rèn)為state.data發(fā)生變化了。
添加回答
舉報(bào)