绑定事件的写法

2020-02-13  本文已影响0人  郑馋师

通常我们会在类里面使用

class App extends React.Component {
  constructor() {
    super();
    this.state = {
      n: 0
    };
  }
  addN(){
    this.setState({
      n: this.state.n + 1
    });
  };
  render() {
    return (
      <div className="App">
        <button onClick={()=>this.addN()}>+1</button>
        {this.state.n}
      </div>
    );
  }
}

来绑定事件addN,但是这样写太麻烦了,经过es6的升级后可以这样写

class App extends React.Component {
  constructor() {
    super();
    this.state = {
      n: 0
    };
  }
  addN = () => {
    this.setState({
      n: this.state.n + 1
    });
  };
  render() {
    return (
      <div className="App">
        <button onClick={this.addN}>+1</button>
        {this.state.n}
      </div>
    );
  }
}

把addN变成一个箭头函数去使用,使得其的this不会因为onClick改变
当我们点击button的时候,实际上是进行了一个button.onClick.call(null,event)的操作,但是由于我们把addN变成了一个箭头函数,所以其的this不会被call改变,这在这里是一个好处,所以以后我们就这样写方便多了

上一篇 下一篇

猜你喜欢

热点阅读