繁体   English   中英

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

[英]Why I am not able to access event value in setTimeout?

我被某人问过这个问题。 我无法给出正确的答案。 你能帮帮我吗? 为什么我们无法在setTimeout中访问event(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'));

您应该能够访问该事件,更可能是您尝试访问合成事件的属性,如e.type或类似的东西。 因为React重用了合成事件对象,所以一旦handleNumber函数返回,事件的所有属性都将变为null。 有关详细信息,请参阅文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM