导航组件/屏幕必须卸载或不安装?

问题描述 投票:0回答:2

我正在尝试使用不同的方法来构建具有react-navigation的复杂应用程序,我想知道我的应用程序组件是否必须卸载。

事实上,在反应导航DrawerNavigator和TabNavigator中,组件在非活动状态下安装并放入内存中,可能会导致一些性能问题吗?

我不知道如果只是从屏幕切换到屏幕让它们安装是最好的导航方式?

假设我的应用树是这样的:

- 应用程序

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

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

---- stack3
     ---- stack3page1

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

起初我创建了一个materialBottomTabNavigator,用于在所有堆栈(stack1,stack2,stack3和stack4)内进行切换。但是,当我访问所有堆栈时,所有装载,我问自己,这是一个问题???

所以现在我正在用另一个approch来做,当我切换到另一个时试图卸载每个堆栈,现在我问自己,这是一个问题吗???

大声笑,请帮我搞好参数:)

反应原生:0.57.8反应导航:3.1.5

多谢你们

react-native react-navigation
2个回答
1
投票

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

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

考虑具有屏幕A和B的堆栈导航器。导航到A后,调用其componentDidMount。当按下B时,也会调用其componentDidMount,但是A仍然挂在堆栈上,因此不会调用其componentWillUnmount。

当从B返回到A时,调用B的componentWillUnmount,但A的componentDidMount不是因为A一直保持挂载。

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

https://reactnavigation.org/docs/en/navigation-lifecycle.html


0
投票

谢谢你的回答。

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

事实是,您不能总是将StackNavigators与复杂的应用程序一起使用。

所以:

我想知道如果使用Tab或Drawer Navigators,我们需要在从屏幕切换到另一个屏幕时卸载组件,或者是否可以安装组成我的导航器的所有屏幕。

TabNavigator --- stack1 --- stack2 --- stack3

在这里你输入stack1上的应用程序,你切换到stack2,然后你切换到stack3。使用TabNavigator默认配置,将挂载所有堆栈(或此处,堆栈内的组件)。

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

© www.soinside.com 2019 - 2024. All rights reserved.