From 6792be3555aa27dac546394b8d69168987e67a9f Mon Sep 17 00:00:00 2001 From: "satyajit.happy" Date: Fri, 21 Jun 2019 14:32:03 +0200 Subject: [PATCH] fix: make sure components update when descriptor changes --- packages/stack/src/views/Stack/Stack.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/stack/src/views/Stack/Stack.tsx b/packages/stack/src/views/Stack/Stack.tsx index db47a1ca..1f4a12ac 100755 --- a/packages/stack/src/views/Stack/Stack.tsx +++ b/packages/stack/src/views/Stack/Stack.tsx @@ -60,6 +60,7 @@ type Props = { type State = { routes: Route[]; + descriptors: { [key: string]: SceneDescriptor }; scenes: HeaderScene[]; progress: ProgressValues; layout: Layout; @@ -81,7 +82,10 @@ const ANIMATED_ONE = new Animated.Value(1); export default class Stack extends React.Component { static getDerivedStateFromProps(props: Props, state: State) { - if (props.routes === state.routes) { + if ( + props.routes === state.routes && + props.descriptors === state.descriptors + ) { return null; } @@ -131,7 +135,8 @@ export default class Stack extends React.Component { scene.route === oldScene.route && scene.progress.current === oldScene.progress.current && scene.progress.next === oldScene.progress.next && - scene.progress.previous === oldScene.progress.previous + scene.progress.previous === oldScene.progress.previous && + scene.descriptor === oldScene.descriptor ) { return oldScene; } @@ -139,6 +144,7 @@ export default class Stack extends React.Component { return scene; }), progress, + descriptors: props.descriptors, }; } @@ -147,6 +153,7 @@ export default class Stack extends React.Component { scenes: [], progress: {}, layout, + descriptors: this.props.descriptors, // Used when card's header is null and mode is float to make transition // between screens with headers and those without headers smooth. // This is not a great heuristic here. We don't know synchronously