Javascript 在有效负载中传递的变异Vuex数组

Javascript 在有效负载中传递的变异Vuex数组,javascript,arrays,vue.js,state,vuex,Javascript,Arrays,Vue.js,State,Vuex,接下来两种方法的技术区别是什么?这个例子很简单,但当我有巨大的嵌套对象时,我需要传递大量的ID,以便在变量中找到所需的对象 在第二个示例中,我传递了一个数组并对其进行了变异。同样,从技术上讲,在这两个示例中,我们调用相同的push方法。我说得对吗?应该是一样的 const state=()=>({ 卡片:[] }); 突变:{ 添加卡(状态、卡){ state.cards.push(卡片) } } //组件。。。 这个.$store.commit('addCard',{…card}); 及 c

接下来两种方法的技术区别是什么?这个例子很简单,但当我有巨大的嵌套对象时,我需要传递大量的ID,以便在变量中找到所需的对象

在第二个示例中,我传递了一个数组并对其进行了变异。同样,从技术上讲,在这两个示例中,我们调用相同的push方法。我说得对吗?应该是一样的

const state=()=>({
卡片:[]
});
突变:{
添加卡(状态、卡){
state.cards.push(卡片)
}
}
//组件。。。
这个.$store.commit('addCard',{…card});

const state=()=>({
卡片:[]
});
突变:{
添加卡(状态、数据){
数据卡推送(数据卡)
}
}
//组件。。。
this.$store.commit('addCard',{cards:this.$store.cards,card:{…card}});
技术上的区别是什么

我知道你不是在问这两者在字面上有什么区别,但我会先说清楚

  • 在第一个代码段中,您将传递一个新项,并将其添加到一个数组状态中,您可以通过变体的
    state
    参数访问该数组状态
  • 在第二个代码段中,传递数组状态和项,并通过有效负载访问数组
同样,从技术上讲,在这两个示例中,我们调用相同的push方法。我说得对吗

是的,这两者达到了完全相同的结果。无论是通过变异参数还是通过有效负载访问的数组状态都是完全相同的对象(即
===


第二个代码片段中的模式在改变深度嵌套状态时非常有用,如您所发现的。缺点是,对于稍后试图学习代码的人来说,可能不太清楚发生了什么变化。

第二个块无效。突变定义不应该有3个参数。也许你遗漏了一些解构括号。谢谢!第二个答案是我一直在寻找的。缺点是好的,但我发现它对深度嵌套状态非常有用。不客气。是的,很有用。对于一个小的个人项目,它应该是好的。对于一个庞大的团队协作来说,这对于研究商店代码的团队成员来说可能是个问题。他们会偶然发现这种突变,而不知道它到底是干什么的。但是,如果足够有用,一些好的文档可能会消除这种担忧。