javascript - 在 React 中将类方法绑定(bind)到 this

标签 javascript reactjs

我对 React 有点陌生,刚刚开始阅读学习 React 之路免费电子书。无论如何,书中有一部分说,为了在类方法中访问this,我们需要将类方法绑定(bind)到this。那里提供的示例清楚地表明:

class ExplainBindingsComponent extends Component {
    onClickMe() {
      console.log(this);
    }
    render() {
      return (
         <button
           onClick={this.onClickMe}
            type="button"
           >
          Click Me
        </button>
    );
  }
}

单击按钮时,this 未定义,如果我添加一个带有以下内容的构造函数:

constructor() {
  super();
  this.onClickMe = this.onClickMe.bind(this);
}

我可以在方法内访问this。但是,我现在很困惑,因为我正在查看一个没有绑定(bind)且可以访问的示例:

class App extends Component {

  constructor(props) {
    super(props);

    this.state = {
       list,
    };

  }

  onDismiss(id) {
    console.log(this);
    const updatedList = this.state.list.filter(item => item.objectID !== id);
    this.setState({list: updatedList});
  }

  render() {
    return (
      <div className="App">
        {this.state.list.map(item => 
             <div key={item.objectID}>
                <span>
                  <a href={item.url}>{item.title}</a>
                </span>
                <span>{item.author}</span>
                <span>{item.num_comments}</span>
                <span>{item.points}</span>
                <span>
                     <button
                         onClick={() => this.onDismiss(item.objectID)}
             type="button"
                     > 
             Dismiss
                     </button>
                </span>
              </div>
        )}
      </div>
    );
  }
}

onDismiss内部,我可以毫无问题地打印this,尽管我没有绑定(bind)它?这与第一个示例有何不同?

最佳答案

这四个字符的原因:

 () =>

这是一个箭头函数。与常规函数不同,它们没有自己的上下文(又名 this),而是采用其父函数之一(在本例中为 render()),并且具有正确的上下文。

关于javascript - 在 React 中将类方法绑定(bind)到 this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50320132/

相关文章:

javascript - Angular 2 和谷歌地图 API。从组件操作 map 的对象

reactjs - React Router v4 与 babel 给出多个路由错误

javascript - 将多个路由指向同一个组件

javascript - 使用 JS 或 CSS 检测 iOS 设备是否有 home bar

javascript - 使用 drawImage、Max Width 调整图像大小以适合 Canvas

node.js - URL 格式错误,无法解析

javascript - React setState() 不适用于单选字段 handleInput 方法

reactjs - 对多个图标使用相同的 usestate Hook

javascript - 奇怪的错误TypeError : Cannot read property 'setValue' of null at onSuccessMapUnitFields [closed]

javascript - 使用php检查AngularJS网页上是否存在某个字符串