React Native:当您离开一个组件时,该组件是不是会被卸载?
Posted
技术标签:
【中文标题】React Native:当您离开一个组件时,该组件是不是会被卸载?【英文标题】:React Native: when you navigate away from a component, does that component ever get un-mounted?React Native:当您离开一个组件时,该组件是否会被卸载? 【发布时间】:2020-10-24 12:46:34 【问题描述】:在我的 React Native 应用程序中,如果我有一个堆栈导航器,并且我使用 this.props.navigation.navigate('screenB')
从 screenA
导航到 screenB
,那么 screenA
是否有可能被卸载?
我问的原因是,当screenA
挂载时,我进行了一个 API 调用,该调用将加载一个资源,该资源将通过 Redux 在所有屏幕上可用。当 API 调用仍在进行中时,我可能会导航到 screenB
。所以我想知道我是否有可能过早导航到screenB
会阻止资源加载并在screenB
中可用。
【问题讨论】:
这取决于您使用的导航库以及在本机平台上映射到哪些控制器 (ios) 和片段 (android)。通常对于推入堆栈或切换选项卡,ScreenA 不会被卸载,否则将被视为替换并被卸载。 @AaronBrager 您能否描述基于控制器、片段或导航库卸载它的任何场景? 一旦你的组件被挂载,它不能自行卸载,你必须自己做。 【参考方案1】:我假设您使用的是 react-navigation
,因为您提到使用 this.props.navigation.navigate('screenB')
进行导航。
假设屏幕永远不会被卸载。当你加载一个'stack'时,第一次进入屏幕时会触发componentDidMount,但如果你回到那个屏幕就不会触发,componentWillUnmount永远不会触发。
React Navigation 确实为您提供了一些帮助,您可以在文档here 中查看更多信息。
【讨论】:
以上是关于React Native:当您离开一个组件时,该组件是不是会被卸载?的主要内容,如果未能解决你的问题,请参考以下文章
当您不知道内容的大小时,如何在 react native 中为高度设置动画?
React Native:如何在 ScrollView/ListView 子项进入/离开视口时为其设置不透明度动画?
React Native 应用程序不会更新状态,直到我离开应用程序然后返回它