希望大家都过得愉快。 我是刚接触原生动画并遇到问题的新手。问题是我正在像这样更新Animation回调中的状态
Animated.timing(position, {
toValue: {
x: 500,
y: 0,
},
duration: 250,
useNativeDriver: false,
}).start(() => {
setActiveIndex(activeIndex + 1)
});
状态已更新,但是第二次调用此动画函数时,它无法访问最新状态。如果activeIndex为0且第一次运行,则activeIndex更新为1,但是第二次调用此动画函数时,activeIndex仍为0,并且仍更新为1,依此类推。 activeIndex会在此回调外部进行更新,这只会在回调内部进行。
任何帮助将不胜感激。
答案 0 :(得分:1)
好的,我认为问题在于您没有获得和更新州的价值。请记住,设置状态是一个异步过程,到您告诉React获得activeIndex
时,它可能已经过时。
解决此问题的推荐方法是对setState
函数使用回调,它将获得该状态的确切先前值,如下所示:
setActiveIndex(prevIndex => prevIndex + 1)