首页 > 解决方案 > useeffect 反应清理不适用于 React Native 模式

问题描述

模态的效果如下所示:

useEffect(() => {
    console.log('mounted')
    return () => {
        console.log('unounted')
   }
}, [])

当我尝试像这样有条件地调用模态时:

modal ? <Suspense fallback={<ActivityIndicator/>}><Modal /></Suspense> : null

当 modal===true 时控制台显示已安装,但当 modal===false 时不显示已卸载。这是怎么回事?功能组件清理在 React Native 中不起作用吗?还是幕后发生了其他事情?

标签: reactjsreact-nativereact-hooks

解决方案


如果你想有条件地显示模态,你应该使用模态的可见道具。

像这样向模态的父组件添加一个状态:

const [isModalShown, setIsModalShown] = useState(false)

然后将状态 ( isModalShown) 传递给道具,当您想要显示模态时,将状态更改为 true ( setIsModalShown(true))


推荐阅读