3
我对Vue和Nuxt非常新颖。我试图让我的脑袋围绕着$store
s。V-bind不更新商店状态更改的类
我创建了一个状态对象,并给它一个属性,它是一个简单的布尔值。我想添加一个类到一个元素取决于该属性是否为true
。下面是我如何创建存储:
const store =() => {
return new Vuex.Store({
state: {
foo: "You got the global state!",
userSidebarVisible: true
},
})
}
在我vue
文件我有以下几点:
<template>
<div>
<div>Hello!</div>
<button v-on:click="showSidebar">Click</button>
<div v-bind:class="{active: userSidebarVisible}">the sidebar</div>
<div>{{$store.state.userSidebarVisible}}</div>
</div>
</template>
<script>
export default {
data: function() {
return {
userSidebarVisible: this.$store.state.userSidebarVisible,
}
},
methods: {
showSidebar: function() {
if (this.$store.state.userSidebarVisible === true) {
this.$store.state.userSidebarVisible = false;
} else {
this.$store.state.userSidebarVisible = true;
}
}
}
}
</script>
当我点击button
,则active
类不切换,但在过去的文本<div>
确实获取更新。我想知道我在这里做错了什么。用本地数据属性做同样的事情似乎按预期工作。
我很新的nuxt和VUE所以道歉的基本跟进,但是当我*添加getter和setter *,我该如何使用它们用'V-bind'?我假设我在我的组件中添加了计算机属性,*不是*商店js文件? – justinw
为我的答案添加了一个示例。这里是关于具有getter/setter函数的计算属性的文档。 https://vuejs.org/v2/guide/computed.html#Computed-Setter – thanksd
爱你的答案,我想增加一些问题的深度; 我们应该用突变来更新我们的状态,但不是直接就可以,但是我在介质上阅读时我们不应该从vue文件提交突变,而是调度提交突变的操作。这个规则是否适用,即使它是同步状态更新? –