当前位置: 首页 > 知识库问答 >
问题:

为什么我不能在setTimeout中访问事件值?

唐信瑞
2023-03-14

有人问过我这个问题。我没能给出正确的答案。你能帮我一下吗?为什么我们不能在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个答案

谢华彩
2023-03-14

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

 类似资料:
  • 问题内容: 我正在研究TypeScript中私有成员的实现,但我感到有些困惑。Intellisense不允许访问私有成员,但是在纯JavaScript中,仅此而已。这使我认为TS无法正确实现私有成员。有什么想法吗? 问题答案: 就像类型检查一样,成员的隐私仅在编译器中强制执行。 私有属性被实现为常规属性,并且不允许类外的代码对其进行访问。 为了使某些东西真正成为类的私有对象,它不能成为该类的成员,

  • 我的朋友们,我的项目有三节课 主类: 首先,当我在类中实例时,java使结构如下所示:structure 我的意思是,当我们在类中实例类时,java逐行读取类,例如: 因为中有3个变量,所以我们可以说,当我们实例类时,我们有5个变量。 例如,我们有字符串、int、int、int、int来表示。我的问题是为什么我们不能直接访问或或? 例如,对于initialize name,我们可以使用以下代码:,

  • 我在Java中使用嵌套类时遇到问题,有人知道为什么Java不允许我这样做吗?

  • 我这样声明了'car'对象: 当我运行该程序时,这段代码给我一个错误,它说“无法分配字段”color“,因为”car[i]“为空”: (“color”属性位于类“vehicles”中)

  • 我的问题是为什么找不到“name”字段?

  • 问题内容: 如果我尝试运行以下代码,请使用该类: 我会找回此错误消息 注意:未定义的属性:DateTime :: $ date … 这没有意义,因为在变量上运行时,它清楚地表明此属性存在并且可以公开访问: 这是PHP中的错误,还是我做错了什么?我正在使用PHP 5.4.3。 问题答案: 这是一个已知问题。 有效的日期实际上是对此处支持的副作用– derick@php.net 由于某些原因,您不应该