前提・実現したいこと
Nuxt.js + Vuexを利用したWebページを作成しています。
ドロワーメニューの表示/非表示をVuexのStateで状態を管理したいです。
pages/index.vueでStateを参照しようとすると、定義されていないとエラーが出てしまいました。
発生している問題・エラーメッセージ
Cannot read property 'state' of undefined
該当のソースコード
pages/index.vue
Javascript
1<template> 2 <div class="page-container md-layout-column"> 3 <md-toolbar class="md-primary"> 4 <md-button class="md-icon-button" @click="toggleMenu"> 5 <md-icon>menu</md-icon> 6 </md-button> 7 <span class="md-title">Test</span> 8 </md-toolbar> 9 10 <md-drawer :md-active.sync="showNavigation"> 11 <md-toolbar class="md-transparent" md-elevation="0"> 12 Test 13 </md-toolbar> 14 15 <md-list> 16 <md-list-item> 17 <md-icon>info</md-icon> 18 <span class="md-list-item-text">Info</span> 19 </md-list-item> 20 </md-list> 21 </md-drawer> 22 </div> 23</template> 24 25<script> 26import { mapMutations, mapState } from 'vuex' 27 28export default { 29 methods: { 30 ...mapMutations({ 31 toggleMenu: 'toggleMenu' 32 }) 33 }, 34 computed: { 35 ...mapState({ 36 showNavigation: 'showNavigation' 37 }) 38 } 39} 40</script>
store/index.js
javascript
1const store = () => new Vuex.Store({ 2 3 state: { 4 showNavigation: false, 5 loading: false 6 }, 7 mutations: { 8 toggleMenu (state) { 9 state.showNavigation = !state.showNavigation 10 } 11 } 12 13})
試したこと
Nuxt.jsのガイド「Vuex ストア」を確認し、<template>内でStateを参照するようにしましたが、状況は変わりませんでした。
https://ja.nuxtjs.org/guide/vuex-store/
<md-button class="md-icon-button" @click="$store.commit('toggleMenu')"> <md-drawer :md-active.sync="$store.state.showNavigation">
補足情報(FW/ツールのバージョンなど)
node: 8.9.1
package.json
json
1 "dependencies": { 2 "nuxt": "^1.0.0", 3 "nuxt-vue-material": "^1.1.0" 4 }, 5 "devDependencies": { 6 "babel-eslint": "^8.2.1", 7 "eslint": "^4.15.0", 8 "eslint-friendly-formatter": "^3.0.0", 9 "eslint-loader": "^1.7.1", 10 "eslint-plugin-vue": "^4.0.0", 11 "node-sass": "^4.9.2", 12 "sass-loader": "^7.0.3" 13 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/31 06:15
2018/07/31 06:19
2018/07/31 07:32