首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >响应:在更新状态时打印所有过去状态

响应:在更新状态时打印所有过去状态
EN

Stack Overflow用户
提问于 2021-07-16 08:47:32
回答 2查看 59关注 0票数 1

我对这段代码的工作很好奇。

这是一个简单的代码,我打算为1提高计数器并在控制台上打印。

但是当我点击这个按钮时,计数器就会增加,也会从0打印到我增加的所有数字。

运行截图

你能解释一下为什么会这样吗?

代码语言:javascript
复制
import { useState } from "react";

function App() {
  const [counter, setCounter] = useState(0);

  const onClick = () => {
    window.addEventListener("click", () => {
      console.log(counter);
    });
    setCounter((counter) => counter + 1);
  };

  return (
    <div className="App">
      <button onClick={() => onClick()}>Add & Print!</button>
      <div>{counter}</div>
    </div>
  );
}

export default App;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-16 09:51:39

您将onClick事件添加到button标记中,在执行该函数时,将onClick事件添加到window中。因此,每当单击button标记时,addEventListener就会显示console.log。在代码中,显示console.log不需要addEventListener,因为button标记已经有onClick事件。

<button onClick={() => onClick()}>Add & Print!</button>标记中,每当单击标记时都会执行onClick事件,

在下面,

代码语言:javascript
复制
    window.addEventListener("click", () => {
      console.log(counter);
    });

addEventListener添加事件。

因此,每当单击button标记时,都会执行addEventListener (添加事件)。

代码语言:javascript
复制
import { useState } from "react";

function App() {
  const [counter, setCounter] = useState(0);

  const onClick = () => {
// doesn't need window.addEventListener
//    window.addEventListener("click", () => {
      console.log(counter);
//    });
    setCounter((counter) => counter + 1);
  };

  return (
    <div className="App">
      <button onClick={() => onClick()}>Add & Print!</button>
      <div>{counter}</div>
    </div>
  );
}

export default App;
票数 0
EN

Stack Overflow用户

发布于 2021-07-16 08:54:03

在每次单击时,您将添加一个事件侦听器。因此,在第一次单击中,有一个事件侦听器,在第二个,第三个,等等。(在第n次单击时,窗口对象上有n个事件侦听器)。

还有使用陈腐状态的事件侦听器的情况。窗口事件侦听器具有闭上(闭包)状态的旧值,并且正在记录它。因此,第一个事件侦听器总是使用count = 0。第三个事件侦听器使用count =2.so,on。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68406153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档