Arrays 如何在Reactjs中为状态对象内的数组预加值

Arrays 如何在Reactjs中为状态对象内的数组预加值,arrays,reactjs,setstate,Arrays,Reactjs,Setstate,我的初始状态为: this.state = { transition:{ completedStages:[] } } 我试图实现的是,在一次函数调用中,我可以更新completedStages的状态,这样每次更新状态时,都会在数组中预先添加值。比如: this.state = { transition:{ completedStages:[SR, RR, BR] } } 为此,我尝试

我的初始状态为:

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]
             }
})

这会弄乱我的输出,并将每一个附加的数组值作为一对键。我怎么能理解这个场景呢?

就这样预先准备好了。您可以使用设置状态的功能方式:

this.setState(prevState => ({
  transition:{
  completedStages:['SR', ...prevState.transition.completedStages]
}})

就这样做吧。您可以使用设置状态的功能方式:

this.setState(prevState => ({
  transition:{
  completedStages:['SR', ...prevState.transition.completedStages]
}})
您可以尝试:

this.setState((state) => {
   return {
     transition: {
       ...state.transition,
       completedStages: ['SR', ...state.transition.completedStages]
     }
   }
})
您可以尝试:

this.setState((state) => {
   return {
     transition: {
       ...state.transition,
       completedStages: ['SR', ...state.transition.completedStages]
     }
   }
})

追加还是预加?预加,当然可以,因为我正在使用
unshift
,我已经更新了这个词。请您显示代码产生的状态,并解释它与您想要的不同之处。在这里,unshift应该可以正常工作。其混乱的原因是
completedStages
是一个数组,但当您设置为状态时,您将通过
[completedStages]
将该数组插入一个新数组。不要将
completedStages
放在数组中,因为它已经是一个数组了。追加的还是预加的?预加的,当然是的,因为我正在使用
unshift
,我已经更新了这个词。请您显示代码产生的状态,并解释它与您想要的不同之处。在这里,unshift应该可以正常工作。其混乱的原因是
completedStages
是一个数组,但当您设置为状态时,您将通过
[completedStages]
将该数组插入一个新数组。不要将
completedStages
放入数组中,因为它已经是一个数组了。但这会在最后添加它。。我需要一开始就把它推进去,在bigginingSorry,每一个新的价值都被推进去,我错过了。Prepend也适用于解构。我编辑了我的答案,效果很好。。。你能帮我了解一下它的品牌吗。。作为我以后的参考?一些解释:
['foo',…oldArray]
创建一个新的数组实例,而不改变
oldArray
this.setState(函数(prevState){return{count:prevState.count+1};})
是setState从旧状态生成新状态的函数方式。内部函数部分的简化ES6版本看起来像:`prevState=>({count:prevState.count+1}),但这将在最后添加它。。我需要一开始就把它推进去,在bigginingSorry,每一个新的价值都被推进去,我错过了。Prepend也适用于解构。我编辑了我的答案,效果很好。。。你能帮我了解一下它的品牌吗。。作为我以后的参考?一些解释:
['foo',…oldArray]
创建一个新的数组实例,而不改变
oldArray
this.setState(函数(prevState){return{count:prevState.count+1};})
是setState从旧状态生成新状态的函数方式。内部函数部分的简化ES6版本如下:`prevState=>({count:prevState.count+1})