【发布时间】:2021-05-18 11:33:16
【问题描述】:
我面临一个与使用 setState(功能组件)反应原生动画相关的特定问题,我使用 setInterval 进行了倒计时,并且每一秒我都会创建一个 setState,每当我有一个 setState 时,动画都会重置并重新启动,而我没有不知道为什么,我也在使用这样的 useRef
const opacity = new Animated.Value(0) const animatedValueRef = useRef(opacity),动画是这样循环的(每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);
}
(代码需要重构)
【问题讨论】:
-
你想用你的代码做什么?
-
我正在尝试从 10 秒到 1 秒倒计时,在此期间我正在制作动画以娱乐(简而言之,我正在将组件从可见切换到不可见(循环))
-
所以你想让单词从不可见>可见>不可见>可见并且只循环10秒?
-
显然动画比它应该的更复杂,但总而言之,动画的骨架是这样的......
标签: react-native state setinterval react-functional-component react-animations