Ste*_*ffi 1 javascript animation ios react-native react-hooks
在我的反应本机应用程序中,我正在尝试对视图的不透明度进行动画处理。\n当我滚动时,我看到动画完成了这项工作,但它\xe2\x80\x99s同时闪烁。我不知道为什么。
\n\n视频示例: https://cdn.discordapp.com/attachments/102861040538120192/560165613092339734/video.mov
\n\n这是我制作的代码
\n\nconst Scrollable = () => {\n const largeHeaderSize = useState({\n height: 0,\n y: 0\n });\n\n const animatedValueScrollY = new Animated.Value(largeHeaderSize.height);\n const [scrollY, setScrollY] = useState(0);\n\n const headerOpacity = animatedValueScrollY.interpolate({\n inputRange: [0, largeHeaderSize.height],\n outputRange: [1, 0],\n extrapolate: "clamp"\n });\n\n return (\n <SafeAreaView>\n <Animated.View\n style={{\n borderBottomWidth:\n scrollY >= largeHeaderSize.height ? StyleSheet.hairlineWidth : 0\n }}>\n <View>\n <Animated.View style={{ zIndex: 1, opacity: headerOpacity }}>\n <Text>Title</Text>\n </Animated.View>\n </View>\n </Animated.View>\n <Animated.ScrollView\n onScroll={Animated.event(\n [{ nativeEvent: { contentOffset: { y: animatedValueScrollY } } }],\n {\n useNativeDriver: true,\n listener: event => setScrollY(event.nativeEvent.contentOffset.y)\n }\n )}\n scrollEventThrottle={16}\n contentInset={{\n top: 0,\n bottom: 50\n }}\n contentOffset={{\n y: 0\n }}\n />\n </SafeAreaView>\n );\n};\nRun Code Online (Sandbox Code Playgroud)\n\n我该如何解决这个问题?
\n小智 5
解决方案是使用 useRef 钩子,如下所示:
const animatedValueScrollY = useRef(new Animated.Value(0))
const headerOpacity = animatedValueScrollY.current.interpolate({
inputRange: [0, largeHeaderSize.height],
outputRange: [1, 0],
extrapolate: 'clamp'
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4687 次 |
| 最近记录: |