Vue.js Vuex通过突变和动作进行大阵列处理
我有一个大约1k…10k元素的数组,必须进行处理。 阵列正在以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
新建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
。我已经编辑了我的答案。谢谢