使用bind运算符来curry函数?

时间:2016-07-29 14:25:13

标签: javascript reactjs ecmascript-next

鉴于this.handler.bind(this)可以替换为::this.handler,如何使用this.handler.bind(this, 1)替换::

我发现这在我想要附加处理程序来响应组件的情况下很有用。 E.g:

handler(x) {
  this.setState({counter: x})
}

<a onClick={this.handler.bind(this, 5)}>increment by 5</a>

我知道我可以使用_.curry(lodash),但在代码可读性方面它几乎相同:

<a onClick={_.curry(::this.handler, 5)}>increment by 5</a>

1 个答案:

答案 0 :(得分:3)

ES next draft for the bind operator不具备部分应用功能,因为它是目前推出的。只需继续使用bindthis.handler.bind(this, 5)或简单的箭头函数e => this.handler(5, e)