【发布时间】:2019-08-08 11:01:21
【问题描述】:
我正在创建一个语言抽认卡应用程序,但在切换列表时遇到了状态更新问题。所以我看到在我的商店中,突变被触发了,但在我的 Vuex 开发工具中,尽管 vue 更新了一些,但状态没有注册更改......
HTML
<label style="margin-left: 5px">Word List</label>
<md-select id="list-select" v-model="currentList">
<md-option v-for="(list, index) in wordLists" :key="index" :value="list.id">
{{list.name}}
</md-option>
</md-select>
JS 组件
import {mapGetters} from 'vuex';
...
computed: {
...mapGetters({
showModalState: 'showModal',
computedList: 'currentListWords',
wordLists: 'wordLists'
}),
...
watch: {
currentList(val) {
let list = this.wordLists.filter((v) => v.id === val).slice();
this.$store.commit("setCurrentList", list);
this.$store.commit("setTempList", list);
}
...
JS 存储突变
setCurrentList(state, payload){
state.currentList = payload;
},
setTempList(state, payload){
state.tempList = payload;
},
JS 吸气剂
wordLists(state){
return state.wordList;
},
currentList(state){
return state.currentList;
},
商店
...
currentList: [],
wordLists: [],
...
【问题讨论】:
-
state.currentList 是一个对象吗?如果是这样,那么您将不得不使用 Vue.set 或 Object.assign
-
它是一个数组中的对象...
-
你描述了你在初始 vuex 状态下的属性吗? { state: () => ({ currentList: [], tempList: [] }) } 另外我认为您的属性名称有误