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文件提交突變,而是調度提交突變的操作。這個規則是否適用,即使它是同步狀態更新? –