我正在尝试在重新渲染时保留非 usestate 变量的数据
我有一个主要组件,它有一个子组件。
子组件包含一个状态并返回一个Cube。它还包含useFrame(),对每一帧执行一个操作。
我使用它根据方向变量(每 3 秒改变一次方向)对立方体进行旋转。我还有另一个变量,时间由每帧上的增量递增。
问题是,当我单击Cube 时,子组件被重新渲染(正常),但我在此过程中丢失了时间和方向值,它们被重新初始化。
有没有办法不丢失数据?不重新初始化它们?我认为useEffect可以解决问题,但我不能将它放在useFrame(或useFrame中的useEffect)。也尝试了useMemo,但失败了,它没有保留更新的值,但我不太确定能很好地使用它吗?是否可以根据他自己的变化进行更新?
制作了一个codesandbox https://codesandbox.io/s/cube-rotation-sdfv8?file=/src/App.js:290-300
在这个例子中,我可以使用 setInterval,但这不是我的意思,这只是一个例子。我想使用useFrame来移动对象,例如,做一些“去那里,然后回来”。
使用 state/setState 也可以,但我会失去巨大的性能,因为它每秒完成 60 次。我可以有很多对象。