带隐式参数的ES2015函数定义

时间:2017-01-18 18:23:11

标签: javascript ecmascript-6

我正在尝试将以下内容从ES2015翻译为vanilla javascript:

fileA.js

export const checkout = ({ dispatch }) => {
  dispatch(types.CHECKOUT_REQUEST)
}

fileB.js

import checkout;
checkout();

到目前为止(使用https://babeljs.io/repl/)我有:

fileA2015.js:

module.exports = {
  checkout: function (_ref) {
    dispatch = _ref.dispatch;
    dispatch(types.CHECKOUT_REQUEST)
  }
};

但我无法弄清楚要传递给fileB中checkout的内容,以便能够访问正确的_ref。这是什么以及它来自哪里?

2 个答案:

答案 0 :(得分:0)

hostfile

在上面的函数中,您正在对一个对象进行解构,该对象应该具有export const checkout = ({ dispatch }) => { dispatch(types.CHECKOUT_REQUEST) } 属性。 dispatch中的回调函数。

当您将dispatch对象作为参数传入时,由于data会导致传入的对象失败,因此它应该具有{ dispatch }属性。

dispatch

因此,当var data = { dispatch: (type) => { ....... } }; 中引用并调用checkout方法时,您必须在此时传入数据对象。

<强> fileB.js

fileB.js

答案 1 :(得分:0)

让我们在这里注意几件事:

''

在上面的代码中,export const checkout = ({ dispatch }) => { dispatch(types.CHECKOUT_REQUEST) } 是一个需要单个参数的函数 - 特别是具有属性checkout()的对象。 dispatch也应该是一个功能。

如果您未将任何参数传递给dispatch(或者没有checkout()属性的对象),则dispatch将不确定。

因此你需要传递类似的东西:

dispatch