我正在尝试以不同的方式来构建具有反应导航和 我想知道我的应用程序组件是否必须卸载。
在React-Navigation DrawerNavigator和TabNavigator中,当组件处于非活动状态时是否将组件装入并放置在内存中,是否会导致某些性能问题?
我不知道,如果只是从屏幕切换到安装它们的屏幕是导航的最佳方法吗?
让我们说我的应用程序树就像:
-应用
---- stack1
---- stack1page1
---- stack1page2
---- stack1page3
---- stack2
---- stack2page1
---- stack2page2
---- stack2page3
---- stack3
---- stack3page1
---- stack4
---- stack4page1
---- stack4page2
首先,我创建了一个materialBottomTabNavigator,用于在所有堆栈(stack1,stack2,stack3和stack4)内进行切换。 但是当我访问所有堆栈时,所有堆栈都已安装,我在问自己,这是一个问题吗?
所以现在我要用另一个方法来做,尝试在切换到另一个堆栈时卸除每个堆栈,现在我问自己,这是一个问题吗?
大声笑,请帮我提供一些不错的论点:)
反应性:0.57.8 反应导航:3.1.5
谢谢大家
答案 0 :(得分:0)
当您使用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
答案 1 :(得分:0)
感谢您的回答。
我的问题是关于TabNavigator和DrawerNavigator,而不是关于StackNavigator,这有很大的不同。 我已经知道,当您从A切换到B并回到A时,组件B已安装和卸载。 我正在使用一些StackNavigator,但没有问题。
事实是,您不能总是将StackNavigators用于复杂的应用程序。
所以:
我想知道是否使用 Tab或抽屉导航器,当我们从屏幕切换到另一个屏幕时是否需要卸载组件,或者是否可以组成我的导航器的屏幕都已安装。
示例
TabNavigator --- stack1 --- stack2 --- stack3
在此处输入stack1上的应用程序,然后切换到stack2,然后再切换到stack3。 使用TabNavigator的默认配置,将安装所有堆栈(或此处的堆栈内部组件)。
这是性能问题吗? 例如,当我从stack1切换到stack2时,是否必须卸载组件?