第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用react重新設置state,為什么數組元素不更新

使用react重新設置state,為什么數組元素不更新

翻閱古今 2019-03-08 18:15:45
constructor(){    super();    this.state={      alll:[],      values:''    }  }  add(e){    let arr1 = this.state.alll;    arr1.push({msg:this.state.values,check1:false});    this.setState({      alll:arr1    })    // console.log(this.state.alll);  }delate(e){    let index1 = e.target.parentNode.id;    let arr1 = [];    for(var i =0;i<this.state.alll.length;i++){      arr1.push(JSON.parse(JSON.stringify(this.state.alll[i])));    }    console.log(arr1);    arr1.splice(index1,1);    console.log(arr1);    this.setState(      function(){          return {alll: arr1};      }    )    console.log(this.state.alll);//  }調用delate方法時,state中的數組alll不會改變?yōu)閯h除一個元素后的arr1。直接使用setState({alll:arr1})也是同樣的效果,無法改變alll
查看完整描述

2 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

你這樣是直接獲取不到更新后的state的,可以把console.log(this.state.alll)放在setState的回調里。譬如:


this.setState({

   alll:arr1

 },() =>{

   console.log(this.state.alll)

 })


查看完整回答
反對 回復 2019-03-14
?
守著一只汪

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

你這里應該是this'指針的問題,你在constructor中寫一下this.delate=this.delate.bind(this);this.add=this.add.bind(this);試一下,其中你寫在delate函數中的this.setstate(function(){})感覺怪怪的,


查看完整回答
反對 回復 2019-03-14
  • 2 回答
  • 0 關注
  • 441 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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