React Native:动画回调在使用挂钩时不访问最新状态

React Native: Animation callback does not access latest state while using hooks

希望你们今天过得愉快。 我刚开始对原生动画做出反应,运行 遇到了问题。问题是我正在像这样更新动画回调中的状态

Animated.timing(position, {
  toValue: {
    x: 500,
    y: 0,
  },
  duration: 250,
  useNativeDriver: false,
}).start(() => {
  setActiveIndex(activeIndex + 1)
});

状态已更新,但第二次调用此动画函数时,它无法访问最新状态。如果 activeIndex 为 0 并且它第一次运行时 activeIndex 更新为 1 但是当第二次调用此动画函数时 activeIndex 仍然为 0 并且它仍然更新为 1 等等。 activeIndex 在此回调外部更新,这仅发生在回调内部。

任何帮助将不胜感激。

好的,我认为问题是您没有获取和更新状态值。请记住,设置状态是一个异步过程,当您告诉 React 获取状态时 activeIndex 它可能是陈旧状态。

解决此问题的推荐方法是使用 setState 函数的回调,它将获得该状态的准确先前值,如下所示:

setActiveIndex(prevIndex => prevIndex + 1)