为什么我无法在setTimeout中访问事件值?

时间:2019-06-03 20:13:13

标签: javascript reactjs settimeout dom-events

有人问我这个问题。我无法给出正确答案。你能帮我吗?为什么我们不能在setTimeout中访问事件(e)的值?

import React from 'react';
import { render } from 'react-dom';

class App extends React.Component{
  state = {
    number: 1,
  }

  handleNumber = (e) => {
    console.log(e)
    setTimeout(() => {
      console.log(e) // It becomes null here.
      if(e) {
      this.setState({number: this.state.number + 1})
      console.log(this.state.number)
    }
  }, 10)
  }

  render() {
    return (
      <div>
        <button onClick={this.handleNumber}>Hello world</button>
      </div>
)}
}

render(<App />, document.getElementById('root'));

1 个答案:

答案 0 :(得分:0)

您应该能够访问该事件,更有可能尝试访问诸如e.type之类的综合事件的属性。由于React会重新使用合成事件对象,因此一旦handleNumber函数返回,事件的所有属性都将变为null。有关更多信息,请参见the docs