所以我的问题是:当使用React Navigation时,当用户导航到Screen A时,会挂载A。当用户转到屏幕B时,B已安装,A保持安装。当用户导航回A时,B会卸载,而A会保持安装状态。
这是预期的according to the docs。
我希望B保持坐骑。这可能吗?如果是,那怎么办?
const ThisStack = createStackNavigator(
{
A: {
screen: ScreenA,
navigationOptions: ({ navigation }) => ({
headerLeft: <HamburgerMenuButton navigation={navigation} />,
}),
},
B: {
screen: ScreenB,
},
},
{
initialRouteName: 'FOO',
headerMode: 'screen',
defaultNavigationOptions: navigationOptions,
}
);
为什么要挂载它?
好吧,我必须使用一个名为Reactive的软件包。 Reactive具有一个名为<ReactiveComponent />
的基本组件,该组件在卸载时会调用一个removeComponent
函数,我试图阻止该函数的发生。
似乎Reactive并不是为了在不同屏幕上使用而创建的,但是要实现我要完成的任务,我需要以这种方式使用它。
答案 0 :(得分:0)
这很容易。您当前正在使用StackNavigation
,它的工作原理是将屏幕彼此叠置并在不再需要它们时将其卸载。另一方面,如果您只想在不同屏幕之间导航而不卸载它们,则可以选择许多其他导航选项。例如TabNavigation
,DrawerNavigation
SwitchNavigator
等。或者,您甚至可以使用navigator
构建自己的react-navigation
。
在这里,我使用switchNavigator
,它通常用于身份验证流程,即,将用户登录或注销。
const ThisStack = createSwitchNavigator(
{
A: {
screen: ScreenA,
navigationOptions: ({ navigation }) => ({
headerLeft: <HamburgerMenuButton navigation={navigation} />,
}),
},
B: {
screen: ScreenB,
},
},
{
initialRouteName: 'FOO',
headerMode: 'screen',
defaultNavigationOptions: navigationOptions,
}
);
我所做的只是使用createSwitchNavigator
而不是createStackNavigator
。让我知道这是否适合您