JavaScript中的::(双冒号)是什么意思?

51

我有一个React应用中的一些JSX代码,就像这样:

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

    return (
      <a href="#" onClick={::this._handleSignOutClick}><i className="fa fa-sign-out"/> Sign out</a>
    );
...
< p >双冒号< code >::在调用函数前的意思是什么?< /p >

2
https://dev59.com/o10Z5IYBdhLWcg3wphoE - dmoo
3
不属于JSX,而是JS语言本身的一部分。 - Ray Nicholus
2
每次调用render时,这不会创建一个新的函数实例吗?(根据您的状态更改次数可能会很多) - flexicious.com
1个回答

56

::一个提出的绑定操作符,它会转换成一个绑定函数:

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

在React中(以及任何其他事件处理程序中),这很有用,因为它意味着当稍后调用事件处理程序时,this将具有预期的值(类的实例)。


7
只是提供一些思考的食物。在我们的渲染方法中,使用 bind 进行组件函数调用被认为不是良好的实践,因为它可能会影响性能。以下是一些替代方法 https://daveceddia.com/avoid-bind-when-passing-props/ - Justin
Cory House曾经说过对于大多数应用程序来说这并不重要,但现在他已经改变了主意。 - Jeff Lowery

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接