Vue.js Vuex通过突变和动作进行大阵列处理

Vue.js Vuex通过突变和动作进行大阵列处理,vue.js,vuex,Vue.js,Vuex,我有一个大约1k…10k元素的数组,必须进行处理。 阵列正在以Vuex状态存储。 用户应该能够处理单个元素或所有元素。 起初,当数组非常小时,我使用变异处理单个元素,使用动作处理所有元素。 所以代码是这样的: 新建Vuex.Store({ 声明:{ 数组:[el1,el2,el3…] }, 突变:{ processEl:(状态,el)=>{ ... } }, 行动:{ processAll:context=>{ context.state.array.forEach(el=>context.co

我有一个大约1k…10k元素的数组,必须进行处理。 阵列正在以Vuex状态存储。 用户应该能够处理单个元素或所有元素。 起初,当数组非常小时,我使用变异处理单个元素,使用动作处理所有元素。 所以代码是这样的:

新建Vuex.Store({
声明:{
数组:[el1,el2,el3…]
},
突变:{
processEl:(状态,el)=>{
...
}
},
行动:{
processAll:context=>{
context.state.array.forEach(el=>context.commit('processEl',el))
}
}
})
不幸的是,随着阵列不断增长,动作性能越来越差,因此我找到了解决方案:

新建Vuex.Store({
声明:{
数组:[el1,el2,el3…]
},
突变:{
processEl:(状态,el)=>{
...
},
processAll:(状态,el)=>{
函数进程(el){
...
}
state.array.forEach(el=>processEl(el))
}
}
})

它工作得更好,但是有没有更优雅的解决方案允许我不重复
processEl
函数内容?

您可以在外部范围中定义
processEl
函数,以便可以从
processEl
processAll
调用它

function processEl (state, el) {
    ...
}

new Vuex.Store({
    state: {
        array: [el1, el2, el3...]
    },
    mutations: {
        processEl,
        processAll (state) {
            state.array.forEach(el => processEl(state, el))
        }
    }
})

谢谢,即使是函数
processEl(state,el){…}
也能正常工作,所以我不确定
state.array.forEach(processEl)
是否能正常工作。哦,你是对的,
processEl
必须访问
state
。我已经编辑了我的答案。谢谢