【发布时间】:2021-03-14 21:06:54
【问题描述】:
当selectedName 发生变化时,我有一个动画要触发,但似乎新值与动画没有触发的先前值相同。在调查之后,钩子唯一的触发器是 newvalue 与以前的 value 不同。有没有办法解决这个问题?
const [selectedName, setSelectedName] = useState("");
useEffect(() => {
console.log("Change", selectedName)
}, [selectedName]);
https://codesandbox.io/s/reactts-text-animation-using-react-transition-group-64gum?file=/src/App.tsx
【问题讨论】:
-
您可以将其更改为对象
const [selectedName, setSelectedName] = useState({value: ""});。你可以这样设置:setSelectedName({value: "somevalue"})。这样,即使您将其更新为相同的对象,useEffect也会触发。 -
只是为了澄清。您想在 value 改变时触发,或者当有一些事件 可能改变 value 时触发,但不一定要这样做?
-
@codemonkey 它确实解决了关于触发钩子的问题。就我而言,我使用的是 react-transition-group。即使更改后动画似乎仍然没有触发
-
@Mr. Hedgehog 不,我希望钩子触发即使新值与以前的值相同
-
知道了。所以动画可能与手头的问题无关。如果您可以沙盒化您的应用程序(至少是基本版本),我相信我们可以解决这个问题。
标签: reactjs typescript use-state