为了账号安全,请及时绑定邮箱和手机立即绑定

使用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不会改变为删除一个元素后的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条经验 获得超3个赞

你这里应该是this'指针的问题,你在constructor中写一下this.delate=this.delate.bind(this);this.add=this.add.bind(this);试一下,其中你写在delate函数中的this.setstate(function(){})感觉怪怪的,


查看完整回答
反对 回复 2019-03-14
  • 2 回答
  • 0 关注
  • 431 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信