所以我的问题是:当使用 React Navigation 时,当用户导航到屏幕 A 时,A 被挂载。当用户转到屏幕 B 时,B 已安装,A 保持安装状态。当用户导航回 A 时,B 变为未安装状态,但 A 保持安装状态。
这是预期的,根据文档.
我希望 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 并不是为了在不同的屏幕上使用而创建的,但为了实现我想要完成的目标,我需要以这种方式使用它。
这很容易。您目前正在使用
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
。让我知道这是否适合你
我面临着同样的问题,你得到解决方案了吗:(