我正在尝试使用不同的方法来构建具有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
多谢你们
当您使用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
谢谢你的回答。
我的问题是关于TabNavigator和DrawerNavigator而不是StackNavigator,这是非常不同的。我已经知道当你从A切换到B并且当你回到A时,组件B已经安装和卸载。我正在使用一些StackNavigators而且我没有问题。
事实是,您不能总是将StackNavigators与复杂的应用程序一起使用。
所以:
我想知道如果使用Tab或Drawer Navigators,我们需要在从屏幕切换到另一个屏幕时卸载组件,或者是否可以安装组成我的导航器的所有屏幕。
例
TabNavigator --- stack1 --- stack2 --- stack3
在这里你输入stack1上的应用程序,你切换到stack2,然后你切换到stack3。使用TabNavigator默认配置,将挂载所有堆栈(或此处,堆栈内的组件)。
这是性能问题吗?当我从stack1切换到stack2时,我是否必须卸载组件?