【发布时间】:2019-04-23 12:30:30
【问题描述】:
这个问题可能也适用于一般的 Vue,但我在我的项目中使用 Vuex。
我的商店中有一组对象,我想为其计算属性。
为简化起见,假设我的店铺如下:
const state = {
numbers = [
{num: 2, multiplier: 3},
{num: 5, multiplier: 10},
{num: 1, multiplier: 6}
]
};
现在,我希望对 numbers 数组的每个对象都有一个计算属性,结果是 num * multiplier(例如 2*3 = 6, 5*10 = 50)
一种解决方案是创建一个返回数字数组的计算属性,加上计算字段...例如:
const getterrs = {
num_list(state){
const list = state.numbers
list.map(n=>{
n.value=n.num*n.multiplier;
);
return list;
}
}
这可行,但有几个问题:
返回的数组不能与非计算上的v-model绑定 字段
只要数组中的任何元素都将重新计算整个数组 数组已更改...我只想重新计算单个元素 改变了。
Vue/Vuex 有可能吗?
【问题讨论】:
-
你找到解决办法了吗?
-
你是否通过突变来改变数组?我认为按照您最初的想象来做这件事,因为它的时间和复杂性是不值得的。但是最简单的方法是当您设置此数据时,您还可以在状态下仅使用计算值创建另一个数组,并在突变或设置数据的任何位置添加数字/乘数对和计算值到两个数组,这将产生你想要的结果,而以一些额外空间为代价的计算量要少得多。