【发布时间】:2017-10-11 20:23:50
【问题描述】:
我在 vuex 中有 getter,它从列表中返回项目
const store = new Vuex.Store({
state: { arr: {
1: {name: 'one', attr: true},
2: {name: 'two', attr: false}
},
mutations: {
setArrItemName(state, id, name) {
Vue.set(state.arr, id, name);
}
},
getters: {
arrItemById(state, getters) => (id) => {
const item = state.arr[id];
if(item) return item;
return {
name: 'default', attr: true
};
}
}
})
如果我在模板中输出它
{{ $store.state.arr[1]['name'] }}
当另一部分调用时它会正常更新
this.$store.commit('setArrItemName', 1, 'new name');
但如果模板包含
{{ $store.getters.arrItemById(1).name }}
那就不更新了
问题:这个getter用在不同的地方,我不想重复这段代码
<template v-if='$store.state.arr[id]'>
{{ $store.state.arr[id].name }}
</template>
Default
<template v-else>
</template>
如果某天“默认”发生变化,或者default 对象的任何其他属性,那么它应该在不同的地方更新。
【问题讨论】: