Vuex state.array.push将对象添加到数组行内。

问题描述 投票:0回答:1

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

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

这是Vue开发工具的结果。

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

如何正确提取和推送?还有 spread 运算符,concat 也没有帮助。

更新。我找到了解决方案. 如果只有一个对象,而你想把整个对象推送到一个数组中,那么就不需要对对象进行迭代。来自stackoverflow

这是我的解决方案。

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

它的工作原理,但我不知道是好的做法或不

arrays push vuex mutation
1个回答
0
投票

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

所以,如果你传递的是和数组对象,想推送它们,可以这样做。

滤波的初始状态:

...
filtered: [],
...

突变。

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

这样你就可以在过滤数组的当前值和传入的有效载荷之间做一个合并。

© www.soinside.com 2019 - 2024. All rights reserved.