React native 导航组件/屏幕是否必须卸载?

React native 导航组件/屏幕是否必须卸载?,react-native,react-navigation,React Native,React Navigation,我正在尝试不同的方法来构建一个带有react导航和 我想知道我的应用程序组件是否必须卸载 在react navigation DrawerNavigator和TabNavigator中,组件在不活动时安装并放入内存,这是否会导致一些性能问题 我不知道从一个屏幕切换到另一个屏幕,让它们挂载是否是最好的导航方式 假设我的应用程序树如下所示: --应用程序 首先,我创建了一个materialBottomTabNavigator,用于在所有堆栈(stack1、stack2、stack3和stack4)内

我正在尝试不同的方法来构建一个带有react导航和 我想知道我的应用程序组件是否必须卸载

在react navigation DrawerNavigator和TabNavigator中,组件在不活动时安装并放入内存,这是否会导致一些性能问题

我不知道从一个屏幕切换到另一个屏幕,让它们挂载是否是最好的导航方式

假设我的应用程序树如下所示:

--应用程序

首先,我创建了一个materialBottomTabNavigator,用于在所有堆栈(stack1、stack2、stack3和stack4)内切换。 但是当我访问所有的堆栈时,都安装了,我问自己,这是一个问题吗

所以现在我用另一种方法,当我切换到另一个堆栈时,尝试卸载每个堆栈,现在我问自己,这是一个问题吗

哈哈,请帮我找些好的理由:)

反应本机:0.57.8 反应导航:3.1.5


感谢各位

当您使用StackNavigator或TabNavigator时,卸载哪个组件完全取决于用户是否离开它或返回它

考虑以下场景,如React navigation文档中所述-

考虑一个带有屏幕a和B的堆栈导航器。导航到a后,调用其组件didMount。当按下B时,它的componentDidMount也会被调用,但是A仍然被装载在堆栈上,因此不会调用它的componentWillUnmount

当从B返回到A时,会调用componentWillUnmount of B,但componentDidMount of A不是,因为A始终保持挂载状态

我建议您阅读文档中的导航生命周期。这是链接-

谢谢你的回答

我的问题是关于TabNavigator和DrawerNavigator的,而不是关于StackNavigator的,它是非常不同的。 我已经知道,当您从A切换到B以及返回A时,组件B已安装和卸载。 我正在使用一些StackNavigator,我没有问题

事实上,你不能总是在复杂的应用程序中使用StackNavigator

因此:

我想知道,当我们从一个屏幕切换到另一个屏幕时,是否需要使用标签导航器或抽屉导航器卸载组件,或者组成我的导航器的所有屏幕都已安装是否正常

示例

选项卡导航器 ---斯塔克1 ---斯塔克2 ---斯塔克3

在这里,您在stack1上输入应用程序,切换到stack2,然后切换到stack3。 使用TabNavigator default config,将安装所有堆栈(这里是堆栈中的组件)

这是性能问题吗?? 例如,当我从stack1切换到stack2时,是否必须卸载组件

---- stack1
     ---- stack1page1
     ---- stack1page2
     ---- stack1page3

---- stack2
     ---- stack2page1
     ---- stack2page2
     ---- stack2page3

---- stack3
     ---- stack3page1

---- stack4
     ---- stack4page1
     ---- stack4page2