【发布时间】:2019-02-23 18:01:52
【问题描述】:
我有一个初始状态:
this.state = {
transition:{
completedStages:[]
}
}
我想要实现的是,在函数调用中,我可以为completedStages 更新我的状态,这样每次更新状态时,值都会预先添加到数组中。喜欢:
this.state = {
transition:{
completedStages:[SR, RR, BR]
}
}
为此,我尝试的是:
let completedStages = [...this.state.transition.completedStages];
completedStages.unshift('SR');
this.setState({
transition:{
completedStages:[completedStages]
}
})
这弄乱了我的输出,并将每个添加的数组值都成对地作为键。我如何理解这种情况?
【问题讨论】:
-
附加还是前置?
-
前置,是的,当然,因为我使用的是
unshift,所以我已经更新了这个词 -
您能否显示您的代码产生的状态并解释它与您想要的有何不同?
-
Unshift 在这里应该可以正常工作。它被搞砸的原因是
completedStages是一个数组,但是当您设置状态时,您正在通过[completedStages]将该数组插入到一个新数组中。不要将completedStages放在一个数组中,因为它已经是一个了。