关于vuex的dispatch()方法提问

function makeAction(type) {
  return ({ dispatch }, ...args) => dispatch(type, ...args);
};

这段代码是vuexactions.js里的代码,通过babel转成es5后代码如下:

function makeAction(type) {
  return function (_ref) {
      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
      args[_key - 1] = arguments[_key];
    }  
      var dispatch = _ref.dispatch; 
       return dispatch.apply(undefined, [type].concat(args));
  };
};

疑问如下:

  1. 这里的dispatch从哪里定义的?

  2. 这段代码的作用?

感谢各位大神的悉心回答!!!!


开心每一天1111
浏览 3628回答 2
2回答

四季花海

官方文档的说法是:触发 mutation handler 的方法是 dispatch 一个 mutation 的事件名。function&nbsp;makeAction(type)&nbsp;{&nbsp; &nbsp;return&nbsp;({&nbsp;dispatch&nbsp;},&nbsp;...args)&nbsp;=>&nbsp;dispatch(type,&nbsp;...args); };我理解的是:这段代码的作用就是触发一个名为‘type‘的mutaition事件,...args是额外的参数。但是这里的{ dispatch }参数我不明白是什么,希望大神能帮忙补充一下。

交互式爱情

这个是 es6 的语法,是“解构赋值使用”, 比如:function foo({x, y = 5}) {  console.log(x, y);}foo({}) // undefined, 5foo({x: 1}) // 1, 5foo({x: 1, y: 2}) // 1, 2foo() // TypeError: Cannot read property 'x' of undefined对于 vuex 中的 action 来说,actions 调用的第一个参数是store的实例,有dispatch等方法属性,调用相当于:function foo({dispatch}) {   dispatch(); } foo({dispatch: function(){...}})
打开App,查看更多内容
随时随地看视频慕课网APP