我面临一个与使用 setState(功能组件)反应原生动画相关的特定问题,我使用 setInterval 进行了倒计时,并且每一秒我都会创建一个 setState,每当我有一个 setState 时,动画都会重置并重新启动,我不知道为什么,我也在使用这样
const opacity = new Animated.Value(0) const animatedValueRef = useRef(opacity)
的 useRef ,动画是这样循环的(每个 250 毫秒)
Animated.timing(animatedValueRef.current, {
toValue: 1,
duration: 220,
easing: Easing.ease,
useNativeDriver: true,
}).start((event) => {
if(event.finished) {
opacity.setValue(0);
second();
}
});
}
谢谢!
编辑:这就是我实现倒计时的方式:
function step1(max, onoff) {
let intervalId;
let varCounter = 1;
setAnimation(true); //animation starts
irrigation(); //animation call
let counter = function () {
if (varCounter < max) {
varCounter= varCounter + 1;
setCounter(varCounter + " " + onoff)
} else {
clearInterval(intervalId);
setCounter(" ");
setAnimation(false);
}
};
intervalId = setInterval(()=>{counter()}, 1000);
}
(代码需要重构)