diff --git a/packages/drawer/src/views/DrawerView.js b/packages/drawer/src/views/DrawerView.js index a971c8e9..572d67f2 100644 --- a/packages/drawer/src/views/DrawerView.js +++ b/packages/drawer/src/views/DrawerView.js @@ -22,13 +22,17 @@ export default class DrawerView extends React.PureComponent { } componentDidUpdate(prevProps) { - const { isDrawerOpen } = this.props.navigation.state; + const { isDrawerOpen, key } = this.props.navigation.state; + const prevKey = prevProps.navigation.state.key; const wasDrawerOpen = prevProps.navigation.state.isDrawerOpen; + const shouldOpen = this._shouldOpen(isDrawerOpen, wasDrawerOpen); + const shouldClose = + this._shouldClose(isDrawerOpen, wasDrawerOpen) || key !== prevKey; - if (this._shouldOpen(isDrawerOpen, wasDrawerOpen)) { + if (shouldOpen) { this._drawerState = 'opening'; this._drawer.openDrawer(); - } else if (this._shouldClose(isDrawerOpen, wasDrawerOpen)) { + } else if (shouldClose) { this._drawerState = 'closing'; this._drawer.closeDrawer(); }