使用绑定运算符来柯里化一个函数?
Use bind operator to curry a function?
鉴于this.handler.bind(this)
可以替换为::this.handler
,我如何用::
替换this.handler.bind(this, 1)
?
我发现这在我想附加处理程序以响应组件的情况下很有用。例如:
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>
ES next draft for the bind operator 不具有当前指定的部分应用功能。只需继续使用 bind
(this.handler.bind(this, 5)
或简单的箭头函数 e => this.handler(5, e)
.
鉴于this.handler.bind(this)
可以替换为::this.handler
,我如何用::
替换this.handler.bind(this, 1)
?
我发现这在我想附加处理程序以响应组件的情况下很有用。例如:
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>
ES next draft for the bind operator 不具有当前指定的部分应用功能。只需继续使用 bind
(this.handler.bind(this, 5)
或简单的箭头函数 e => this.handler(5, e)
.