From 05fafbf65eab3b2f1bd5594795f3160ed62ca1c3 Mon Sep 17 00:00:00 2001 From: Brent Vatne Date: Tue, 30 Oct 2018 18:51:28 -0700 Subject: [PATCH] Add back old drawer behavior with unmountInactiveRoutes config --- packages/drawer/src/views/DrawerSidebar.js | 2 +- packages/drawer/src/views/DrawerView.js | 90 ++++++++++++++-------- 2 files changed, 57 insertions(+), 35 deletions(-) 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()} );