diff --git a/packages/stack/example/package.json b/packages/stack/example/package.json index fdace5d9..76c3b4e1 100644 --- a/packages/stack/example/package.json +++ b/packages/stack/example/package.json @@ -25,7 +25,7 @@ "react-native-unimodules": "~0.5.2", "react-native-web": "^0.11.4", "react-native-webview": "~5.12.0", - "react-navigation": "^4.0.4", + "react-navigation": "^4.0.5", "react-navigation-drawer": "^2.0.0", "react-navigation-tabs": "2.2.0" }, diff --git a/packages/stack/example/yarn.lock b/packages/stack/example/yarn.lock index aa3e2dbd..b8ab50b9 100644 --- a/packages/stack/example/yarn.lock +++ b/packages/stack/example/yarn.lock @@ -1261,10 +1261,10 @@ resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.1.tgz#dbcfc5ec08efbb02d4142dd9426c8d7a396829d7" integrity sha512-EyJVSbarZkOPYq+zCZLx9apMcpwkX9HvH6R+6CeVL29q88kEFemnLO/IhmE4YX/0MfalsduI8eTi7fuQh/5VeA== -"@react-navigation/core@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.0.tgz#73d1a12448e2bd71855e0080b95a7f51ede0cd9e" - integrity sha512-NLm24lA51R8o8c+iFnwtN9elqRzm4OJ8f1qPBCUNIYW1sb8M5yCD53vRP0fRcPFpr/6Xzs2TJMsWnnebwFp0Rw== +"@react-navigation/core@^3.5.1": + version "3.5.1" + resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.1.tgz#7a2339fca3496979305fb3a8ab88c2ca8d8c214d" + integrity sha512-q7NyhWVYOhVIWqL2GZKa6G78YarXaVTTtOlSDkvy4ZIggo40wZzamlnrJRvsaQX46gsgw45FAWb5SriHh8o7eA== dependencies: hoist-non-react-statics "^3.3.0" path-to-regexp "^1.7.0" @@ -9451,12 +9451,12 @@ react-navigation-tabs@2.2.0: react-lifecycles-compat "^3.0.4" react-native-tab-view "^2.6.2" -react-navigation@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.0.4.tgz#afa43c7183891d38708cf57f1d4394fed1d4c2ad" - integrity sha512-MZeVkYkFTKZobhrXMV3Hgeg0HHeokCrYsbxActVfO0n6zfzm0/La6EiC2mIHiwOymvb1ZygyFf90vryLUMEBNA== +react-navigation@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.0.5.tgz#d4e16d9884cfd6bb2cda4d16e001227e2c859b46" + integrity sha512-VidRiSA2RvrgPlKs/7FNKV6pXEYXREtxiEl6m/Dmfb8x27amG6JRibzJC2mpWt4w0SAIGMUjHallRi3h9sIk0A== dependencies: - "@react-navigation/core" "^3.5.0" + "@react-navigation/core" "^3.5.1" "@react-navigation/native" "^3.6.2" react-proxy@^1.1.7: diff --git a/packages/stack/package.json b/packages/stack/package.json index 93f96830..5834310f 100644 --- a/packages/stack/package.json +++ b/packages/stack/package.json @@ -68,7 +68,7 @@ "react-native-gesture-handler": "^1.3.0", "react-native-reanimated": "^1.1.0", "react-native-screens": "^1.0.0-alpha.23", - "react-navigation": "^4.0.4", + "react-navigation": "^4.0.5", "react-test-renderer": "16.8.3", "release-it": "^12.3.2", "scheduler": "^0.14.0", @@ -81,7 +81,7 @@ "react-native-gesture-handler": "^1.0.0", "react-native-reanimated": "^1.3.0-alpha", "react-native-screens": "^1.0.0 || ^1.0.0-alpha", - "react-navigation": "^4.0.4" + "react-navigation": "^4.0.5" }, "jest": { "preset": "react-native", diff --git a/packages/stack/src/views/Stack/Stack.tsx b/packages/stack/src/views/Stack/Stack.tsx index 0068e715..9854a302 100755 --- a/packages/stack/src/views/Stack/Stack.tsx +++ b/packages/stack/src/views/Stack/Stack.tsx @@ -102,6 +102,8 @@ const MaybeScreen = ({ return ; }; +const FALLBACK_DESCRIPTOR = Object.freeze({ options: {} }); + const { cond, eq } = Animated; const ANIMATED_ONE = new Animated.Value(1); @@ -163,10 +165,14 @@ export default class Stack extends React.Component { : undefined; const next = nextRoute ? progress[nextRoute.key] : undefined; + const oldScene = state.scenes[index]; const scene = { route, previous: previousRoute, - descriptor: props.descriptors[route.key], + descriptor: + props.descriptors[route.key] || + state.descriptors[route.key] || + (oldScene ? oldScene.descriptor : FALLBACK_DESCRIPTOR), progress: { current, next, @@ -174,8 +180,6 @@ export default class Stack extends React.Component { }, }; - const oldScene = state.scenes[index]; - if ( oldScene && scene.route === oldScene.route && diff --git a/packages/stack/yarn.lock b/packages/stack/yarn.lock index f0b1f99b..f0e87233 100644 --- a/packages/stack/yarn.lock +++ b/packages/stack/yarn.lock @@ -1155,10 +1155,10 @@ resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.1.tgz#dbcfc5ec08efbb02d4142dd9426c8d7a396829d7" integrity sha512-EyJVSbarZkOPYq+zCZLx9apMcpwkX9HvH6R+6CeVL29q88kEFemnLO/IhmE4YX/0MfalsduI8eTi7fuQh/5VeA== -"@react-navigation/core@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.0.tgz#73d1a12448e2bd71855e0080b95a7f51ede0cd9e" - integrity sha512-NLm24lA51R8o8c+iFnwtN9elqRzm4OJ8f1qPBCUNIYW1sb8M5yCD53vRP0fRcPFpr/6Xzs2TJMsWnnebwFp0Rw== +"@react-navigation/core@^3.5.1": + version "3.5.1" + resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.1.tgz#7a2339fca3496979305fb3a8ab88c2ca8d8c214d" + integrity sha512-q7NyhWVYOhVIWqL2GZKa6G78YarXaVTTtOlSDkvy4ZIggo40wZzamlnrJRvsaQX46gsgw45FAWb5SriHh8o7eA== dependencies: hoist-non-react-statics "^3.3.0" path-to-regexp "^1.7.0" @@ -7333,12 +7333,12 @@ react-native@~0.59.8: xmldoc "^0.4.0" yargs "^9.0.0" -react-navigation@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.0.4.tgz#afa43c7183891d38708cf57f1d4394fed1d4c2ad" - integrity sha512-MZeVkYkFTKZobhrXMV3Hgeg0HHeokCrYsbxActVfO0n6zfzm0/La6EiC2mIHiwOymvb1ZygyFf90vryLUMEBNA== +react-navigation@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.0.5.tgz#d4e16d9884cfd6bb2cda4d16e001227e2c859b46" + integrity sha512-VidRiSA2RvrgPlKs/7FNKV6pXEYXREtxiEl6m/Dmfb8x27amG6JRibzJC2mpWt4w0SAIGMUjHallRi3h9sIk0A== dependencies: - "@react-navigation/core" "^3.5.0" + "@react-navigation/core" "^3.5.1" "@react-navigation/native" "^3.6.2" react-proxy@^1.1.7: