问题描述
我试图使此卡在每次加载组件时褪色,并在使用挂钩进行卸载后逐渐褪色,但我没有这样做,非常需要别人的帮助。请您告诉我如何使用hooks
这是我的组件:
import React,{ useState } from "react";
const Home = (props) => {
const renderCard = ({ item }) => {
return (
//I am trying to add a fadein to this everytime it loads and fadout when It unmounts
<View>
<Text style={styles.day}>{item}</Text>
<MealCards
item={state[item]}
navigation={navigation}
onChange={onChange}
/>
<View style={styles.divider} />
</View>
);
};
return (
<FlatList
data={days}
keyExtractor={(item) => item}
showsHorizontalScrollIndicator={false}
renderItem={renderCard}
/>
);
};
解决方法
将组件包装在Animated.View
中,并使用不透明度https://reactnative.dev/docs/animated使它淡入动画。
类似
const [fadeAnim] = useState(new Animated.Value(0));
React.useEffect(() => {
Animated.timing(fadeAnim,{
toValue: 1,duration: 1000,}).start();
},[]);
return (
<Animated.View
style={{
opacity: fadeAnim,}}
>
{props.children}
</Animated.View>
);
上面的代码用于淡入。淡出将在useEffect的返回函数中完成。