From 592c19aa59c1f46a9c2805b03563f4830b36db4d Mon Sep 17 00:00:00 2001 From: Brent Vatne Date: Mon, 16 Jul 2018 18:09:49 -0700 Subject: [PATCH] Fix edge case where route was in nav state but never actually graduated to scene --- packages/react-navigation/src/views/ScenesReducer.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/react-navigation/src/views/ScenesReducer.js b/packages/react-navigation/src/views/ScenesReducer.js index 0c2ae5e7..e7f69a61 100644 --- a/packages/react-navigation/src/views/ScenesReducer.js +++ b/packages/react-navigation/src/views/ScenesReducer.js @@ -130,7 +130,17 @@ export default function ScenesReducer( return; } const lastScene = scenes.find(scene => scene.route.key === route.key); - const descriptor = lastScene && lastScene.descriptor; + + // We can get into a weird place where we have a queued transition and then clobber + // that transition without ever actually rendering the scene, in which case + // there is no lastScene and so we need to grab the descriptor from elsewhere. + // Warning: changes to descriptor caching may break this, and in that case + // we may be better off just not adding it to stale scenes at all. + const descriptor = lastScene + ? lastScene.descriptor + : descriptors[route.key]; + + invariant(descriptor, 'Cannot add stale scene with no descriptor'); staleScenes.set(key, { index,