Skip to content

下面代码中,点击 “+3” 按钮后,age 的值是什么?

Posted on:2024年6月1日 at 10:17
import { useState } from "react";

export default function Counter() {
  const [age, setAge] = useState(42);
  function increment() {
    setAge(age + 1);
  }
  return (
    <>
      <h1>Your age: {age}</h1>
      <button
        onClick={() => {
          increment();
          increment();
          increment();
        }}
      >
        +3
      </button>
    </>
  );
}

点击 +3 时,可能只更新为 43。

这是因为 setAge(age + 1) 即使多次调用,也不会立即更新组件状态,而是会进行合并,最终只触发一次重新渲染。

如果要实现调用三次就增加 3 ,可以将 increment 改为函数式更新:

function increment() {
  setAge((a) => a + 1); // 函数式更新
}
原文转自:https://fe.ecool.fun/topic/296a01a0-93d4-4e7c-97a1-442b0795e33b