Vuex state.array.push 在数组行内添加对象

Vuex state.array.push adds objects inside of array row

我开发了过滤器功能,在推送数组后,Vuex 将数组的所有对象推送到一个数组行中。

pushFiltered (state, payload) {  
    state.filtered.push(payload)
},

这是在 vue 开发工具上的结果:

filtered:Array[3]
0:Object
1:Object
2:Array[2]
  >0:Object
  >1:Object

如何正确提取和推送?还有传播运算符,concat 也无济于事。

更新: 我找到了解决方案。如果只有一个对象并且您想将整个对象推入数组,则无需迭代该对象。

这是我的解决方案:

pushFiltered (state, payload) {
        payload.forEach(function(row) {
          state.filtered.push(row)
        });
    }

它有效,但我不知道这是否是好的做法

根据你的代码,我猜第一次过滤的不是数组,我指的是store中的初始状态。

因此,如果您正在传递对象数组并想推送它们,您可以这样做:

过滤的初始状态:

...
filtered: [],
...

突变:

mergeFiltered (state, payload) {
    state.filtered = [...state.filtered, ...payload]
}

这样您就可以在过滤后的数组中的当前值和传入的有效负载之间进行合并。