2017-08-03 55 views
0

/調度從書:混淆Vuex犯簡單VueJS測試

要調用mutation handler,你需要調用store.commit其類型:store.commit('increment')

突變必須始終保持同步。


從書:

操作提交突變(可以是異步)

Actions are triggeredstore.dispatch方法:store.dispatch('increment')

所以這是action - >mutation - >new state大部分時間。

那麼是什麼困惑我,是很簡單的例子,因此我試圖表明一個物體getTest

See this pen

的異步結果爲什麼不能Vue公司看到我不是調用突變,而是動作何時加載組件?

回答

1

你在說什麼這本「書」?我問,因爲你正在使用混合新Vuex 2.*和舊Vuex 1.*語法,這是不再在2.*工作,所以我假設你正在學習部分來自過時的資源。

(旁註:你爲什麼使用Vue公司Vue公司1 2.*已經出了10個月了...)

  • 你的行動和突變的定義是正確的,但沒有vuex: {}鍵組件在Vuex 2.*
  • 此外,你正試圖派遣一個行動'INCREMENT',但你的商店只有一個突變的名稱,沒有行動。所以你必須使用commit而不是dispatch

而是直接計算出的道具和方法添加到您的實例,或使用Vuex提供的map*助手:

var vm = new Vue({ 
    el: '[vue=app]', 
    data: { 
    welcome: 'Testing Vuex' 
    }, 
    store: myStore, 
    created() { 
    this.$store.dispatch(FETCH_TEST_STATE) 
    }, 
    computed: { 
    ...Vuex.mapState({ 
     count: state => state.count, 
     getTest: state => state.testState 
    }), 
    } 
    methods: { 
    increment({dispatch}) { 
    this.$store.commit('INCREMENT', 1) 
    } 
    } 
}) 
  • created調用操作不起作用,因爲異步/等待代碼簿
  • 從此操作調用的提交沒有設置任何狀態。

修復了這一切,這是你的工作示例:

https://codepen.io/LinusBorg/pen/NvRYYy?editors=1010

+0

的「書」是Vuex文檔,我引述被gitbook出版。它在報價中被超鏈接。很抱歉,如果它不明顯。 – Simon

+0

謝謝你回答我的問題。我把筆作爲一個起點,甚至沒有意識到它是vue 1。我現在只用了vue 2幾個星期。祝你有美好的一天。 (我有另一個問題,一旦我已經知道你做了什麼:)) – Simon