在我的一个商店模块(modal.js
)中,我有一个对话状态变量和一个setDialogState
突变,该突变为dialog
分配了一个值。
从组件调用setDialogState
时,dialog
的值不变。我知道这是因为this.$store.state.modal.dialog
的值没有更改,而且Vue Devtools扩展也显示了dialog
的相同旧值。
这是怎么回事?
在我的商店模块store/modules/modal.js
中:
const state = {
dialog: false
}
const mutations = {
setDialogState (state, payload) {
this.state.dialog = payload;
console.log(this.state.dialog); // strangely, this correctly logs the new value
}
}
export default {
namespaced: true,
state,
mutations
}
在我的组件中:
<script>
import { mapState } from 'vuex'
export default {
computed: {
...mapState({
dialog: state => state.modal.dialog
})
},
mounted() {
console.log(this.$store.state.modal.dialog);
this.$store.commit('modal/setDialogState', true);
setTimeout(()=> {
console.log(this.$store.state.modal.dialog);
}, 2000); // this should log the new value, yet it still logs the old value
}
}
</script>
答案 0 :(得分:1)
您正在尝试通过引用state
访问this
,因此您无法应用状态更改。
mutation mechanism可以在每个函数中获取state
,然后只需将其用作当前函数内部的局部变量即可。