2016-12-09 8 views
1

私はvuejsとvuexを使ってプロジェクトを開発するのに苦労していますが、コンポーネントのthis.$store.state.countではうまくいきません。どうして?

マイ設定:

"vuex": "^2.0.0" 

store.js:

import Vue from 'vue' 
import Vuex from 'vuex' 
Vue.use(Vuex) 

export default new Vuex.Store({ 
    state: { 
    count: 12 
    }, 
    mutations: { 
    increment (state) { 
     state.count++ 
    } 
    }, 
    strict: true 
}) 

main.js:

import store from './vuex/store' 
import Vue from 'vue' 

new Vue({ 
    store, 
    . 
    . 
    . 
}).$mount('#app') 

component.js:

<script> 
export default { 
    name: 'landing-page', 
    created:() => { 
     console.log('status2') 
     console.log(this.$store.state.count) 
    } 
    } 
</script> 

エラー:

Uncaught TypeError: Cannot read property '$store' of undefined 
+5

エラーは '$のstore'が定義されていないことを意味するものではありません。慎重に読む。 「これ」は定義されていないと言います。 – Xufox

+0

ああ、そうです。 'this'は未定義です。なぜここで 'this 'を使うことができないのですか? – steve

+0

コンポーネント内の 'this'は' data'を参照します。 – joaumg

答えて

1

このストアを直接編集することはありません。

突然変異を誘発します。

ように(component.js):

<script> 
import store from './vuex/store' 

export default { 
    name: 'landing-page', 
    computed: { 
    counter() { 
     return store.state.count // get state 
    } 
    }, 
    created:() => { 
    store.commit('increment') // set state 
    } 
} 
</script> 
+1

ありがとうございます。しかし、私はちょうど状態になることを望んでいます。 – steve

+0

getを反映するように編集しました;; – joaumg

+0

この例をVueのnoobとして理解していない例は、ストアをインスタンス化してVueに渡す例です。この例で 'store'をインポートすると、 Vuexのオブジェクトですか?なぜVueから何らかの形で渡されないのですか? –

関連する問題