2016-07-29 15 views
2

Vorausgesetzt, dass durch ::this.handler ersetzt werden kann, wie kann ich ersetzen this.handler.bind(this, 1) mit ::?Verwenden Bindeoperator, um eine Funktion zu curry?

Ich fand das nützlich in einer Situation, in der ich Handler an die Komponenten anschließen möchte. ZB:

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

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

Ich weiß, dass ich _.curry verwenden (lodash), aber es ist so ziemlich das gleiche in Bezug auf die Lesbarkeit des Codes:

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

Antwort

3

Die ES next draft for the bind operator nicht teilweise Anwendung ist Funktion, da sie zur Zeit specced ist . Verwenden Sie einfach weiter bind (this.handler.bind(this, 5) oder eine einfache Pfeilfunktion e => this.handler(5, e).