0
我不明白我做錯了什麼。我在vue.js之上使用了帶有nuxt.js的Vuetify框架。由於狀態更新的計算屬性組件不更新
我希望導航抽屜的初始狀態在索引頁面上打開,但在其他頁面上關閉。當我第一次加載頁面時(如果它是顯示抽屜的索引頁面,否則它是隱藏的),我可以設法獲得所需的結果,但是當我使用抽屜中的鏈接更改頁面時(nuxt js正在使用vue路由器背景)抽屜保留它的狀態。
我做了包含一個快速的中間件這樣的:
export default ({store, route}) => {
const mitem = store.state.menu.filter(item =>
item.to.indexOf(route.name) >= 0
)[0]
const title = mitem ? mitem.title : 'Home'
store.commit('setPageTitle', title)
}
這裏的店是在國家和突變(菜單JSON文件包含以下項的條目:{ title, icon, to }
)
import menu from '~json/menu.json'
export const state =() => ({
menu,
drawer: true,
pageTitle: undefined
})
export const mutations = {
toggleDrawer: state => {
state.drawer = !state.drawer
},
setPageTitle: (state, title) => {
state.pageTitle = title
state.drawer = title === 'Home'
console.log(state.drawer)
}
}
而這裏的佈局
<template>
<v-app>
<v-navigation-drawer
persistent
v-model="drawer"
>
<v-list>
<v-list-tile
router
v-for="(item, i) in menu"
:key="i"
:to="item.to"
>
<v-list-tile-action>
<v-icon>{{ item.icon }}</v-icon>
</v-list-tile-action>
<v-list-tile-content>
<v-list-tile-title>{{ item.title }}</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
</v-list>
</v-navigation-drawer>
<v-toolbar fixed>
<v-toolbar-side-icon @click.native.stop="toggleDrawer" />
<v-toolbar-title>{{ pageTitle }}</v-toolbar-title>
<v-spacer></v-spacer>
</v-toolbar>
<main>
<v-container fluid>
<nuxt />
</v-container>
</main>
</v-app>
</template>
<script>
import { mapState, mapMutations } from 'vuex'
export default {
methods: {
...mapMutations([ 'toggleDrawer' ])
},
computed: {
...mapState([ 'menu', 'drawer', 'pageTitle' ])
}
}
</script>
的console.log
向我顯示狀態得到更新,但隨着state.drawer
更改,組件未更新並且抽屜仍然存在。
任何想法我做錯了/如何解決這個問題? 在此先感謝
勒布