使用计算属性(Vuex)时,$STORE属性不是反应性的
我有一个Vuex商店,我正在将其注入到我的实例中:
import store from '../store';
const mainNav = new Vue({
el: '#main-nav',
store,
components: { NavComponent }
});
我正在从组件中的该存储创建一个计算属性:
computed: {
isWide() {
return this.$store.state.nav.type === 'wide';
}
}
这会在组件初始化时为模板创建this.isWide
属性,但在更新存储值时,组件不会注册此属性-旧值仍在模板上。
我在这里做错了什么?
解决方案
如果一切设置正确,代码应该可以运行:http://codepen.io/CodinCat/pen/RKZeZe?editors=1010
一个非常常见的错误是您没有提供州初始数据。
您应该显式声明状态形状,以便代替
state: {}
// or
state: {
nav: {}
}
执行此操作:
state: {
nav: {
type: '...'
},
...
}
或者属性不是反应性的,如下例:http://codepen.io/CodinCat/pen/ggxBEV?editors=1010
并确保您确实更新了状态,可能问题只是您没有按照预期正确更新状态。
相关文章