Почему эта функция в исходном коде в форме редукса обернута другой функцией? - PullRequest
0 голосов
/ 31 мая 2018

Мой вопрос относится к деталям реализации в redux-form исходном коде.Просто я хотел бы получить некоторое представление о причинах и мыслях, которые вошли в следующий фрагмент кода, который можно найти в src/createField.js здесь и здесь .

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

У меня вопрос не о том, как или где используются эти функции, а конкретно , почему эти функции упакованы так, как они есть.Например, почему бы просто не использовать:

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

Я предполагаю, что это связано с хранением прямых ссылок на эти функции в родительском компоненте.Мой интерес к этому связан с другим вопросом , который я задал на SO.

1 Ответ

0 голосов
/ 31 мая 2018

Значение 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);
...