极客时间返利平台,你可以在上边通过山月的链接购买课程,并添加我的微信 (shanyue94) 领取返现。
山月训练营之面试直通车 服务上线了,从准备简历、八股文准备、项目经历准备、面试、面经、面经解答、主观问题答复、谈薪再到入职的一条龙服务。

# 关于 setState 以下代码的输出

更多描述

代码如下所示,每次切换 TODO 状态时,通过手动修改 todo.status 再 setTodo,此时是否会修改成功

代码见 setState - codesandbox (opens new window)

import { useState } from "react";

export default function App() {
  const [todo, setTodo] = useState({ id: 1, status: "TODO" });
  return (
    <div className="App">
      <button
        onClick={() => {
          todo.status = !todo.status;
          setTodo(todo);
        }}
      >
        Toggle Status
      </button>
      <h1>{todo.status}</h1>
    </div>
  );
}

Issue

欢迎在 Gtihub Issue 中回答此问题: Issue 566 (opens new window)

state 是只读的

补充一点:与 class 组件中的 setState 方法不同,useState 不会自动合并更新对象。

Last Updated: 9/27/2022, 2:39:59 PM