2016-08-16 54 views
16

我有在这样的反应应用中的一些JSX代码:::(双冒号)在JavaScript中表示什么?

... 
_renderSignOutLink() { 
    if (!this.props.currentUser) { 
     return false; 
    } 

    return (
     <a href="#" onClick={::this._handleSignOutClick}><i className="fa fa-sign-out"/> Sign out</a> 
    ); 
... 

什么是双结肠,::,意味着调用函数之前?

+2

http://stackoverflow.com/questions/31220078/javascript-double-colon-es7-proposal – dmoo

+3

不是JSX的一部分,而是JS本身的一部分 –

+2

这是不是每次调用render时都会创建一个新的函数实例取决于你的状态变化,可能会很多次)? –

回答

21

::a proposed binding operator该desugars成绑定函数:

::foo.bar 
// becomes 
foo.bar.bind(foo) 

在阵营(和任何其它的事件处理程序),因为它意味着this将具有预期值(类的实例)这是有用的,当稍后调用事件处理程序。

+5

只是一些思考的食物。在我们的渲染方法中,对组件的函数调用使用bind并不被认为是好的做法,因为它可能会影响性能。这里有一些替代方案https://daveceddia.com/avoid-bind-when-passing-props/ – Justin

相关问题