反应中的高阶方法

时间:2015-11-24 17:34:04

标签: javascript reactjs higher-order-functions

我有一个React.js组件,我想定义一个更高阶的方法 -

updater: function (path) {
  return function (value) {
    this.setState(this.modules.setter.set(this.state, path, value)) 
  }
}

this.modules.setter.set返回状态的更新版本,并在指定的value内放置新的path

希望能够定义这样的方法 -

updateUserStreet: this.updater('user.address.street')

创建所需的this.modules.setter.set我没有问题,但是我在使用高阶方法时遇到了麻烦。 控制台告诉我this.updater is not a function

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在React Component的updateUserStreet方法中定义.getInitialState,如此

getInitialState: function () {
  this.updateUserStreet = this.updater('user.address.street');
  return {...}
}

updateUserStreet方法现在可以在React组件

上定义的任何其他方法中使用

答案 1 :(得分:0)

看起来updater实际上是React组件中的保留字。它用于维护组件的生命周期和状态。

我直接在文档中找不到它,但在此处简要提到:http://reactkungfu.com/2016/03/dive-into-react-codebase-handling-state-changes/

尝试将updater重命名为其他名称。