本周末,我正在掠夺最近的一些反应回购,我发现了一个使用ES6类语法进行组件组合的例子,有点像这样。
class MyThing extends Component {
constructor(props) {
super(props)
this.state = {something: 'the thing'}
}
submit() {
// do stuff
}
render() {
<div>
<button onClick={::this.submit}>Fire Submit</button>
</div>
}
}
注意::this.submit
代替this.submit.bind(this)
它有效,而且我无法在此功能的任何地方找到文档,我觉得自己是一个疯狂的人,这个onClick={::this.doSomethingInsideRenderWithoutDotBind}
语法叫什么,我在哪里可以阅读更多关于它的内容?
答案 0 :(得分:2)
双冒号详细here,目前是ES7提案,所以它还没有一成不变,但仍然存在很多争论。它也不允许传递参数。所以如果你有这种需要它确实有限。
还有“胖箭”&#39;函数选项(用于实际函数,而不是对它的调用),它与词汇绑定...
// Basic syntax:
(param1, param2, paramN) => { statements }
(param1, param2, paramN) => expression
// equivalent to: => { return expression; }
// Parentheses are optional when there's only one argument:
(singleParam) => { statements }
singleParam => { statements }
// A function with no arguments requires parentheses:
() => { statements }
// Advanced:
// Parenthesize the body to return an object literal expression:
params => ({foo: bar})
// Rest parameters are supported
(param1, param2, ...rest) => { statements }