我正在使用react-native-popup-menu
并创建了我自己的renderer
组件。它是一个函数组件,所以简而言之它看起来像这样:
const ContextMenuRenderer = ({ children, layouts, ...otherProps }) => {
return (
<Animated.View
{...otherProps}
onLayout={handleViewLayout}
style={[styles.viewStyle, viewAnimations]}
>
{children}
</Animated.View>
);
}
viewAnimations
包含开场动画,代码比较大,但可以在这个小吃中看到。
文档说“为了处理异步关闭动画,渲染器可以实现close()
在菜单关闭之前调用的方法。关闭方法必须返回Promise
。”
我阅读了ContextMenu 代码,它是一个类组件并实现close()
为:
close() {
return new Promise(resolve => {
Animated.timing(this.state.scaleAnim, {
duration: CLOSE_ANIM_DURATION,
toValue: 0,
easing: Easing.in(Easing.cubic),
useNativeDriver: USE_NATIVE_DRIVER,
}).start(resolve);
});
}
我试图在我的函数组件中实现类似的东西,但代码没有被执行。我认为它不起作用,但我能做些什么来创建关闭动画?我想做一个淡出动画。
function close() {
console.log('close'); // It isn't logged
return new Promise((resolve) => {
console.log('resolve close');
});
}