如何不卸载Drawer Navigator先前打开的屏幕

时间:2018-11-05 06:14:17

标签: javascript react-native react-native-navigation native-base

我正在使用react-native-navigation,并尝试创建一个DrawerNavigator,它不会像TabNavigator的工作方式那样卸载先前打开的屏幕。因为我的屏幕之一包含一个Web视图,并且我不希望每次更换屏幕时都重新加载它。

这是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 })}

1 个答案:

答案 0 :(得分:0)

在更高版本的react native导航中,他们为DrawerNavigator添加了 unmountInactiveScreens 属性

卸载无效屏幕 离开屏幕时是否应卸下屏幕。卸载屏幕会重置屏幕中的任何本地状态以及屏幕中嵌套导航器的状态。默认为false。