2017-08-03 102 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