reactjs - useeffect 反应清理不适用于 React Native 模式
问题描述
模态的效果如下所示:
useEffect(() => {
console.log('mounted')
return () => {
console.log('unounted')
}
}, [])
当我尝试像这样有条件地调用模态时:
modal ? <Suspense fallback={<ActivityIndicator/>}><Modal /></Suspense> : null
当 modal===true 时控制台显示已安装,但当 modal===false 时不显示已卸载。这是怎么回事?功能组件清理在 React Native 中不起作用吗?还是幕后发生了其他事情?
解决方案
如果你想有条件地显示模态,你应该使用模态的可见道具。
像这样向模态的父组件添加一个状态:
const [isModalShown, setIsModalShown] = useState(false)
然后将状态 ( isModalShown
) 传递给道具,当您想要显示模态时,将状态更改为 true ( setIsModalShown(true)
)
推荐阅读
- android - Gradle 任务“:app:dexBuilderDebug”失败并出现 AccessDeniedException(Android Studio 无法删除目录)
- c++ - How to insert values in set directly from input stream?
- amazon-s3 - 首次在远程状态下运行 terraform init
- javascript - 在我的 React SharePoint Modern Web 部件中使用 dangerouslySetInnerHTML 的安全方式
- azure - 在加载路由时呈现动态原始 XML 数据
- spring - 使用 JPA 和 Hibernate 批量插入/更新与 Postgresql 日志不一致
- c# - 当我使用 altchunk 将一个文档与图像合并到另一个文档中时,它会损坏文件
- python - 聚类但对变量有限制
- android - 如何过滤特定对象?(不是字符串)
- excel-formula - 如何获取大于 X 的第一个日期的单个单元格值