使用react重新设置state,为什么数组元素不更新

constructor(){
super();
this.state={
alll:[],
values:''
}
}
add(e){
letarr1=this.state.alll;
arr1.push({msg:this.state.values,check1:false});
this.setState({
alll:arr1
})
//console.log(this.state.alll);
}
delate(e){
letindex1=e.target.parentNode.id;
letarr1=[];
for(vari=0;iarr1.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
拉风的咖菲猫
浏览 5222回答 2
2回答

青春有我

你这样是直接获取不到更新后的state的,可以把console.log(this.state.alll)放在setState的回调里。譬如:this.setState({alll:arr1},()=>{console.log(this.state.alll)})

守着一只汪

你这里应该是this'指针的问题,你在constructor中写一下this.delate=this.delate.bind(this);this.add=this.add.bind(this);试一下,其中你写在delate函数中的this.setstate(function(){})感觉怪怪的,
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript