diff --git a/packages/drawer/src/views/DrawerSidebar.js b/packages/drawer/src/views/DrawerSidebar.js
index bbd2e3e5..12519c42 100644
--- a/packages/drawer/src/views/DrawerSidebar.js
+++ b/packages/drawer/src/views/DrawerSidebar.js
@@ -1,7 +1,7 @@
import React from 'react';
import { StyleSheet, View } from 'react-native';
-import { NavigationActions, StackActions } from '@react-navigation/core';
+import { NavigationActions } from '@react-navigation/core';
import invariant from '../utils/invariant';
/**
diff --git a/packages/drawer/src/views/DrawerView.js b/packages/drawer/src/views/DrawerView.js
index 1bf315ef..2ab181f1 100644
--- a/packages/drawer/src/views/DrawerView.js
+++ b/packages/drawer/src/views/DrawerView.js
@@ -139,12 +139,59 @@ export default class DrawerView extends React.PureComponent {
);
};
+ _renderContent = () => {
+ let { lazy, navigation } = this.props;
+ let { loaded } = this.state;
+ let { routes } = navigation.state;
+
+ if (this.props.navigationConfig.unmountInactiveRoutes) {
+ let activeKey = navigation.state.routes[navigation.state.index].key;
+ let descriptor = this.props.descriptors[activeKey];
+
+ return (
+
+ );
+ } else {
+ return (
+
+ {routes.map((route, index) => {
+ if (lazy && !loaded.includes(index)) {
+ // Don't render a screen if we've never navigated to it
+ return null;
+ }
+
+ let isFocused = navigation.state.index === index;
+ let descriptor = this.props.descriptors[route.key];
+
+ return (
+
+
+
+ );
+ })}
+
+ );
+ }
+ };
+
render() {
- const { lazy, navigation } = this.props;
- const { loaded } = this.state;
- const { state } = navigation;
- const { routes } = state;
- const activeKey = routes[state.index].key;
+ const { navigation } = this.props;
+ const activeKey = navigation.state.routes[navigation.state.index].key;
const { drawerLockMode } = this.props.descriptors[activeKey].options;
return (
@@ -180,37 +227,12 @@ export default class DrawerView extends React.PureComponent {
statusBarAnimation={this.props.navigationConfig.statusBarAnimation}
minSwipeDistance={this.props.navigationConfig.minSwipeDistance}
overlayColor={this.props.navigationConfig.overlayColor}
- contentContainerStyle={this.props.navigationConfig.contentContainerStyle}
+ contentContainerStyle={
+ this.props.navigationConfig.contentContainerStyle
+ }
>
-
- {routes.map((route, index) => {
- if (lazy && !loaded.includes(index)) {
- // Don't render a screen if we've never navigated to it
- return null;
- }
-
- const isFocused = navigation.state.index === index;
- const descriptor = this.props.descriptors[route.key];
-
- return (
-
-
-
- );
- })}
-
+ {this._renderContent()}
);