状态改变后如何阻止反应动画重新激活?我在 Animated.View 中有一个 textInput,在 OnChangeText 后,动画会重新运行。
这是动画视图的代码,它从屏幕顶部向下滚动视图,并在状态更改时将其向下移动到屏幕上。
textInput 在这个动画视图中,但是当我输入一些东西时,动画再次运行!
我尝试从 UseEffect 中删除 pageLevel 依赖项并没有帮助,我认为一旦其中一个状态发生变化,应用程序就会重新运行每个状态,这使得它可以重新激活整个页面,在这种情况下,我该如何解决这个问题?
动画视图代码:
//ROLL IN ROLL OUT
const RollUpDownView = (props:any) => {
//COMING IN
if (pageLevel == props.index){
if(pageLevel < previousPageLevel){
var from = 1000
var to = 0
}
if(pageLevel > previousPageLevel){
var from = -1000
var to = 0
}
}
//GOING OUT
if(props.index != pageLevel ){
if(pageLevel > previousPageLevel){
var from = 0
var to = 1000
}
if(pageLevel < previousPageLevel){
var from = 0
var to = -1000
}
}
const rollAnim = useRef(new Animated.Value(from)).current // Initial value
React.useEffect(() => {
Animated.timing(
rollAnim,
{
toValue: to,
duration: 1000,
useNativeDriver:false,
}
).start();
}, [pageLevel])
return (
<Animated.View
style={{
...props.style,
top: rollAnim,
}}
>
{props.children}
</Animated.View>
);
}
并且 textInput 在里面:
<RollUpDownView index={1}>
<TextInput
styles={styles.textInputStyle}
text='Full Name'
placeholder='Type your full name here...'
inputText={fullNameInput}
onChangeText={setFullNameInput}
/>
</RollUpDownView>