繁体   English   中英

以前的 state 在 useState 功能组件中

[英]Previous state in a useState functional component

我需要根据用户的输入旋转一个元素。 问题是,在我的功能组件中,我使用 useState 挂钩来存储和更新用户键入的值,但元素的旋转不是基于最后一个输入,而是基于前一个输入。

我在 CodeSandbox 中重新创建了简化示例来说明问题。

如何使其在功能组件中正常工作?

https://codesandbox.io/s/strange-clarke-nlyuo?file=/src/App.js:0-762

您不应该进入 DOM 来设置转换。 您应该从输入中删除 querySelector 行。

<input
  type="number"
  max={359}
  value={value}
  onChange={(e) => {
    setValue(e.target.value);
    // don't do this 👇
    document.querySelector("h1").style.transform = `rotate(${value}deg)`;
  }}
/>

state 更改将触发重新渲染,因此只需在渲染期间设置变换:

<h1
  style={{
    transform: `rotate(${value}deg)`,
    border: "1px solid pink",
    display: "inline",
    padding: "10px"
  }}
>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM