为什么redux-form源代码中的这个函数被另一个函数包装?

时间:2018-05-31 09:04:07

标签: javascript reactjs redux redux-form

我的问题与redux-form源代码中的实现细节有关。简单地说,我想深入了解背后的原因,并考虑进入以下src/createField.js herehere中可以找到的代码片段。

this.context._reduxForm.register(
     newName,
     'Field',
     () => nextProps.validate,
     () => nextProps.warn
)

我的问题是关于这些函数的使用方式和位置,但具体而言为什么这些函数是以它们的方式包装的。例如,为什么不简单地使用:

this.context._reduxForm.register(
  newName,
  'Field',
  nextProps.validate,
  nextProps.warn
)

我的猜测是它与在父组件中存储这些函数的直接引用有关。我对此的兴趣与我在SO上提出的另一个question有关。

1 个答案:

答案 0 :(得分:0)

this的值取决于函数的调用方式。从对象中分离函数调用将断开this中与该对象的连接。

var nextProps = {
    validate: function () { console.log("This is ", this); }
};

function callFunction(callback) {
    callback();
}

console.log("======");
console.log("Preserve this");
callFunction(() => nextProps.validate());
console.log("======");
console.log("Don't preserve this");
callFunction(nextProps.validate);