UseState 始终显示以前的值

新手上路,请多包涵

这是所有新反应开发人员中的一个热门问题,但不知何故我无法理解可用解决方案背后的逻辑。我正在尝试使用挂钩更新状态变量并尝试读取更新后的值,但它总是返回以前的值而不是新值。下面是我的代码执行顺序。

 onClick={setTransactionAccountId}

单击按钮时,它会执行以下代码并更新状态,但 console.log 显示旧值。

 const [accountId, setAccountId] = useState(0);

const setTransactionAccountId = e => {
  console.log("Clicked ID:", e.currentTarget.value);
  setAccountId(e.currentTarget.value);
  console.log("accountId:", accountId);
};

控制台日志:

  1. 第一个按钮点击:

点击ID:0 accountId:0

  1. 第二个按钮点击:

点击ID:1 accountId:0

谁能告诉我这种行为背后的原因以及如何解决它。

原文由 vivek.p.n manu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 446
1 个回答

accountId 不会更新此渲染。您必须等待 下一次 渲染才能更新。 accountId 仅在调用 useState 时填充在函数组件的顶部。你在渲染的中间。如果您需要实际值,请继续将其从 e.currentTarget.value 中拉出。

原文由 zero298 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题