我的问题与redux-form源代码中的实现细节有关。简单地说,我想深入了解背后的原因,并考虑进入以下src/createField.js
here和here中可以找到的代码片段。
this.context._reduxForm.register(
newName,
'Field',
() => nextProps.validate,
() => nextProps.warn
)
我的问题是不关于这些函数的使用方式和位置,但具体而言为什么这些函数是以它们的方式包装的。例如,为什么不简单地使用:
this.context._reduxForm.register(
newName,
'Field',
nextProps.validate,
nextProps.warn
)
我的猜测是它与在父组件中存储这些函数的直接引用有关。我对此的兴趣与我在SO上提出的另一个question有关。
答案 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);