Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React Native:动画回调在使用挂钩时不访问最新状态_Javascript_Reactjs_React Native_React Native Android_React Animated - Fatal编程技术网

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

Javascript React Native:动画回调在使用挂钩时不访问最新状态,javascript,reactjs,react-native,react-native-android,react-animated,Javascript,Reactjs,React Native,React Native Android,React Animated,希望你们都有一个美好的一天。 我对本地动画不熟悉,遇到了一个问题。问题是我正在像这样更新动画回调中的状态 Animated.timing(position, { toValue: { x: 500, y: 0, }, duration: 250, useNativeDriver: false, }).start(() => { setActiveIndex(activeIndex + 1) }); 状态已更新,但当第二次调用此动画函数时,它无法访问最新

希望你们都有一个美好的一天。 我对本地动画不熟悉,遇到了一个问题。问题是我正在像这样更新动画回调中的状态

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 to get
activeIndex
时,状态可能已过时

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

setActiveIndex(prevIndex => prevIndex + 1)

嘿,谢谢回复,您的解决方案工作正常,但是如果我在动画回调中输入console.log activeIndex,我仍然会得到0,而不是更新的,只是具有与我上面解释的相同的行为