::(双冒号)在JavaScript中意味着什么?

Ale*_* M. 44 javascript reactjs

我在这样的反应应用程序中有一些JSX代码:

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

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

::在调用函数之前,双冒号是什么意思?

ssu*_*ube 45

::一个拟议的绑定运算符,它可以进入绑定函数:

::foo.bar
// becomes
foo.bar.bind(foo)
Run Code Online (Sandbox Code Playgroud)

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

  • 只是一些值得思考的东西.在我们的渲染方法中对组件使用bind进行函数调用并不是一种好习惯,因为它可以达到性能.以下是一些替代方案https://daveceddia.com/avoid-bind-when-passing-props/ (7认同)