reactjs - React-Native Animate 查看进出

标签 reactjs react-native react-animated react-native-animatable

目前,我正在努力处理出现和消失的动画。 我的目标是对 View 进行动画进出。但我还希望 View 在动画后 100% 消失

想法

    ...

const visible: boolean = props.visible || false;
const [showView, setShowView] = useState<boolean>(visible);
const viewAnimation = useRef<Animatable.View & View>(null);

   useEffect(() => {
        const Animation = async () => {

            if (visible) {
                setShowView(true);
                if (viewAnimation.current)
                    await viewAnimation.current.bounceIn(2000);
            } else {
                if (viewAnimation.current)
                    await viewAnimation.current.bounceOut(2000);
                setShowView(false)
            }
        }

        Animation();
    }, [visible, viewAnimation]);

...

{showView &&
<Animatable.View ref={viewAnimation}>
...
</Animatable.View>
}

...

问题 viewAnimationRef 在下一个渲染周期中设置,而不是在将 showView 设置为 true 后立即设置 ->bounceIn 动画永远不会被执行..因为 viewAnimation.current 为 null..

我正在使用:

  • react 原生0.62
  • react-native-animable 1.3.3

也许某人知道如何解决这个问题^^

谢谢

最佳答案

解决方案很简单,只需将 Animatable.View 包裹在普通 View 周围,如果你想隐藏它,就隐藏普通 View

示例:

    ...

const visible: boolean = props.visible || false;
const [showView, setShowView] = useState<boolean>(visible);
const viewAnimation = useRef<Animatable.View & View>(null);

   useEffect(() => {
        const Animation = async () => {

            if (visible) {
                setShowView(true);
                if (viewAnimation.current)
                    await viewAnimation.current.bounceIn(2000);
            } else {
                if (viewAnimation.current)
                    await viewAnimation.current.bounceOut(2000);
                setShowView(false)
            }
        }

        Animation();
    }, [visible, viewAnimation]);

...


<Animatable.View ref={viewAnimation}>
{showView &&
<View>
...
</View>
}
</Animatable.View>


...

关于reactjs - React-Native Animate 查看进出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62689828/

相关文章:

reactjs - 为什么即使我的 client.js 没有使用 "react"也必须导入它

react-native - 如何将 FCM(firebase 云消息传递)与 react-native 集成

javascript - React native SQLite 插入语句不起作用

javascript - 使用 React Native 和 Redux 的动画状态管理

javascript - 如何使用 React Router v4 访问 React 应用程序之外的历史实例?

reactjs - 无法在material-ui@next中导入Svg图标

javascript - 使用 React Native Animated 时,可以对偏移进行动画处理吗?

reactjs - 在 React Native 中订阅监听器的通用解决方案

javascript - 如何在 React Native 中使元素固定在滚动条上?

react-native - 当状态/ Prop 改变时, react native 动画部分列表跳到顶部