【发布时间】:2018-11-05 06:14:17
【问题描述】:
我正在使用 react-native-navigation 并尝试创建一个 DrawerNavigator,它不会像 TabNavigator 的工作方式那样卸载先前打开的屏幕。因为我的一个屏幕包含一个 webview,我不希望它在每次更改屏幕时都重新加载。
这是 App.js 中的一些示例代码..
const Drawer = DrawerNavigator(
{
Home: { screen: Home },
PageWithWebview: { screen: PageWithWebview},
Settings: { screen: Settings },
},
{
initialRouteName: "Home",
contentComponent: props => <SideBar user={global.user} />
}
);
const AppNavigator = StackNavigator(
{
Drawer: { screen: Drawer },
},
{
initialRouteName: "Drawer",
headerMode: "none"
}
);
export default () =>
<Root>
<AppNavigator/>
</Root>;
在我的侧边栏组件中,我有按钮可以根据选择的内容导航到不同的路线。
onPress={() => this.props.navigation.navigate(selected, { userDetails: global.user })}
【问题讨论】:
-
随着更高版本的反应导航,这种行为似乎已经改变。您可能会发现,通过将软件包更新到较新的版本,它们不再卸载以前的屏幕。 github.com/react-navigation/react-navigation/issues/2277
-
仅供参考,可以覆盖新行为以恢复卸载非活动屏幕的旧行为。 reactnavigation.org/blog/2018/11/17/…
-
我当时所做的是将其他屏幕放置在模态中。我很快就会试试这个。谢谢。
标签: javascript react-native react-native-navigation native-base