@react-navigation/core 8.0.0-alpha.34 → 8.0.0-alpha.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +17 -14
  2. package/lib/module/BaseNavigationContainer.js +14 -2
  3. package/lib/module/BaseNavigationContainer.js.map +1 -1
  4. package/lib/module/NavigationIndependentTree.js +9 -6
  5. package/lib/module/NavigationIndependentTree.js.map +1 -1
  6. package/lib/module/NavigationProvider.js +9 -4
  7. package/lib/module/NavigationProvider.js.map +1 -1
  8. package/lib/module/PreventRemoveProvider.js +2 -2
  9. package/lib/module/PreventRemoveProvider.js.map +1 -1
  10. package/lib/module/SceneView.js +2 -1
  11. package/lib/module/SceneView.js.map +1 -1
  12. package/lib/module/useDescriptors.js +7 -4
  13. package/lib/module/useDescriptors.js.map +1 -1
  14. package/lib/module/useFocusEffect.js +4 -2
  15. package/lib/module/useFocusEffect.js.map +1 -1
  16. package/lib/module/useFocusEvents.js +4 -2
  17. package/lib/module/useFocusEvents.js.map +1 -1
  18. package/lib/module/useIsFocused.js +1 -0
  19. package/lib/module/useIsFocused.js.map +1 -1
  20. package/lib/module/useNavigationBuilder.js +40 -37
  21. package/lib/module/useNavigationBuilder.js.map +1 -1
  22. package/lib/module/useNavigationCache.js +82 -78
  23. package/lib/module/useNavigationCache.js.map +1 -1
  24. package/lib/module/useNavigationState.js +48 -23
  25. package/lib/module/useNavigationState.js.map +1 -1
  26. package/lib/module/useOptionsGetters.js +18 -17
  27. package/lib/module/useOptionsGetters.js.map +1 -1
  28. package/lib/module/usePreventRemoveContext.js +1 -1
  29. package/lib/module/usePreventRemoveContext.js.map +1 -1
  30. package/lib/module/useRouteCache.js +43 -33
  31. package/lib/module/useRouteCache.js.map +1 -1
  32. package/lib/module/useScheduleUpdate.js +3 -1
  33. package/lib/module/useScheduleUpdate.js.map +1 -1
  34. package/lib/module/useSyncState.js +9 -10
  35. package/lib/module/useSyncState.js.map +1 -1
  36. package/lib/typescript/src/BaseNavigationContainer.d.ts.map +1 -1
  37. package/lib/typescript/src/NavigationBuilderContext.d.ts +1 -1
  38. package/lib/typescript/src/NavigationBuilderContext.d.ts.map +1 -1
  39. package/lib/typescript/src/NavigationIndependentTree.d.ts.map +1 -1
  40. package/lib/typescript/src/NavigationProvider.d.ts.map +1 -1
  41. package/lib/typescript/src/PreventRemoveProvider.d.ts.map +1 -1
  42. package/lib/typescript/src/SceneView.d.ts +2 -1
  43. package/lib/typescript/src/SceneView.d.ts.map +1 -1
  44. package/lib/typescript/src/useDescriptors.d.ts +2 -2
  45. package/lib/typescript/src/useDescriptors.d.ts.map +1 -1
  46. package/lib/typescript/src/useFocusEffect.d.ts.map +1 -1
  47. package/lib/typescript/src/useFocusEvents.d.ts.map +1 -1
  48. package/lib/typescript/src/useIsFocused.d.ts +1 -0
  49. package/lib/typescript/src/useIsFocused.d.ts.map +1 -1
  50. package/lib/typescript/src/useNavigationBuilder.d.ts +1 -3
  51. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  52. package/lib/typescript/src/useNavigationCache.d.ts.map +1 -1
  53. package/lib/typescript/src/useNavigationState.d.ts +1 -0
  54. package/lib/typescript/src/useNavigationState.d.ts.map +1 -1
  55. package/lib/typescript/src/useOptionsGetters.d.ts +2 -4
  56. package/lib/typescript/src/useOptionsGetters.d.ts.map +1 -1
  57. package/lib/typescript/src/useRouteCache.d.ts +7 -12
  58. package/lib/typescript/src/useRouteCache.d.ts.map +1 -1
  59. package/lib/typescript/src/useScheduleUpdate.d.ts.map +1 -1
  60. package/lib/typescript/src/useSyncState.d.ts.map +1 -1
  61. package/package.json +2 -2
  62. package/src/BaseNavigationContainer.tsx +19 -2
  63. package/src/NavigationBuilderContext.tsx +1 -1
  64. package/src/NavigationIndependentTree.tsx +16 -8
  65. package/src/NavigationProvider.tsx +13 -4
  66. package/src/PreventRemoveProvider.tsx +2 -8
  67. package/src/SceneView.tsx +3 -1
  68. package/src/useDescriptors.tsx +18 -5
  69. package/src/useFocusEffect.tsx +5 -2
  70. package/src/useFocusEvents.tsx +5 -2
  71. package/src/useIsFocused.tsx +4 -0
  72. package/src/useNavigationBuilder.tsx +53 -45
  73. package/src/useNavigationCache.tsx +127 -105
  74. package/src/useNavigationState.tsx +60 -29
  75. package/src/useOptionsGetters.tsx +24 -24
  76. package/src/usePreventRemoveContext.tsx +1 -1
  77. package/src/useRouteCache.tsx +49 -33
  78. package/src/useScheduleUpdate.tsx +4 -1
  79. package/src/useSyncState.tsx +9 -11
  80. package/lib/module/useComponent.js +0 -34
  81. package/lib/module/useComponent.js.map +0 -1
  82. package/lib/typescript/src/useComponent.d.ts +0 -7
  83. package/lib/typescript/src/useComponent.d.ts.map +0 -1
  84. package/src/useComponent.tsx +0 -37
@@ -19,7 +19,6 @@ import { Screen } from "./Screen.js";
19
19
  import { PrivateValueStore } from "./types.js";
20
20
  import { UnhandledActionContext } from "./UnhandledActionContext.js";
21
21
  import { useChildListeners } from "./useChildListeners.js";
22
- import { useComponent } from "./useComponent.js";
23
22
  import { useDescriptors } from "./useDescriptors.js";
24
23
  import { useEventEmitter } from "./useEventEmitter.js";
25
24
  import { useFocusedListenersChildrenAdapter } from "./useFocusedListenersChildrenAdapter.js";
@@ -232,12 +231,13 @@ export function useNavigationBuilder(createRouter, options) {
232
231
  onEmitEvent,
233
232
  getIsStateEmitted
234
233
  } = useNavigationBuilderContext();
235
- const stateCleanupRef = React.useRef(false);
236
- const lastStateRef = React.useRef(undefined);
234
+ const mountStateRef = React.useRef('initial');
235
+ const previousStateRef = React.useRef(currentState);
236
+ const savedStateRef = React.useRef(undefined);
237
237
  const setState = useLatestCallback(state => {
238
- if (stateCleanupRef.current) {
238
+ if (mountStateRef.current === 'unmounted') {
239
239
  // Store the state locally in case the current navigator is in `Activity`
240
- lastStateRef.current = state;
240
+ savedStateRef.current = state;
241
241
 
242
242
  // State might have been already cleaned up due to unmount
243
243
  // We don't want to update `route.state` in parent
@@ -246,12 +246,17 @@ export function useNavigationBuilder(createRouter, options) {
246
246
  }
247
247
  setCurrentState(state);
248
248
  });
249
+ const lastState = (mountStateRef.current !== 'mounted' || !isStateInitialized(currentState)) && (
250
+ // If the state object differs from previously committed state, we have new state
251
+ // e.g. because of a reset
252
+ // So we need to use it before checking if we should reuse the saved state.
253
+ currentState === previousStateRef.current || mountStateRef.current === 'unmounted' && currentState === undefined) ?
254
+ // If the navigator is hidden with `Activity`, its state gets cleaned up due to effect cleanup.
255
+ // So we reuse the saved state to avoid remounting screens when the navigator is shown again.
256
+ savedStateRef.current : undefined;
249
257
  const [stateBeforeInitialization, initializedState, isFirstStateInitialization, paramsUsedForInitialization] = React.useMemo(() => {
250
- // If the state was already cleaned up, but we have it stored in ref,
251
- // It likely got cleaned up due to `<Activity mode="hidden">`
252
- // We should reuse this state to avoid remounting screens
253
- if (stateCleanupRef.current && lastStateRef.current && isStateValid(lastStateRef.current)) {
254
- const state = isStateInitialized(lastStateRef.current) ? lastStateRef.current : router.getRehydratedState(lastStateRef.current, {
258
+ if (lastState && isStateValid(lastState)) {
259
+ const state = isStateInitialized(lastState) ? lastState : router.getRehydratedState(lastState, {
255
260
  routeNames,
256
261
  routeParamList,
257
262
  routeGetIdList
@@ -307,7 +312,7 @@ export function useNavigationBuilder(createRouter, options) {
307
312
  // that some changes to routeConfigs are explicitly ignored, such as changes
308
313
  // to initialParams
309
314
  // eslint-disable-next-line react-hooks/exhaustive-deps
310
- }, [currentState, router, isStateValid]);
315
+ }, [currentState, lastState, router, isStateValid]);
311
316
  const previousRouteKeyListRef = React.useRef(routeKeyList);
312
317
  React.useInsertionEffect(() => {
313
318
  previousRouteKeyListRef.current = routeKeyList;
@@ -333,7 +338,7 @@ export function useNavigationBuilder(createRouter, options) {
333
338
  // If the state isn't initialized, or stale, use the state we initialized instead
334
339
  // The state won't update until there's a change needed in the state we have initialized locally
335
340
  // So it'll be `undefined` or stale until the first navigation event happens
336
- isStateInitialized(currentState) ? currentState : initializedState;
341
+ lastState === undefined && isStateInitialized(currentState) ? currentState : initializedState;
337
342
  let nextState = state;
338
343
  let shouldClearUnhandledState = false;
339
344
  if (unhandledState != null && !isStateValid(unhandledState)) {
@@ -414,7 +419,7 @@ export function useNavigationBuilder(createRouter, options) {
414
419
  routeGetIdList
415
420
  }) : nextState;
416
421
  }
417
- React.useEffect(() => {
422
+ React.useInsertionEffect(() => {
418
423
  if (consumedParams && didConsumeNestedParams && typeof route?.params === 'object' && route.params != null) {
419
424
  consumedParams.set(route.params, true);
420
425
  }
@@ -434,18 +439,25 @@ export function useNavigationBuilder(createRouter, options) {
434
439
  // We can't use the outdated state since the screens have changed, which will cause error due to mismatched config
435
440
  // So we override the state object we return to use the latest state as soon as possible
436
441
  state = nextState;
437
-
438
- // Last state to reuse if component gets cleaned up due to `<Activity mode="hidden">`
439
- React.useEffect(() => {
440
- lastStateRef.current = state;
442
+ React.useInsertionEffect(() => {
443
+ savedStateRef.current = state;
444
+ previousStateRef.current = currentState;
441
445
  });
442
- const lastNotifiedStateRef = React.useRef(null);
446
+ React.useInsertionEffect(() => {
447
+ return () => {
448
+ // An initially hidden Activity doesn't run passive effects or their cleanup.
449
+ // We mark actual unmount here so queued updates can't write state into a replacement navigator.
450
+ mountStateRef.current = 'unmounted';
451
+ };
452
+ }, []);
443
453
  React.useEffect(() => {
454
+ const savedState = savedStateRef.current ?? state;
455
+
444
456
  // In strict mode, React will double-invoke effects.
445
- // So we need to reset the flag if component was not unmounted
446
- stateCleanupRef.current = false;
457
+ // So we need to reset the status if component was not unmounted
458
+ mountStateRef.current = 'mounted';
447
459
  setKey(navigatorKey);
448
- if ((!getIsInitial() || getIsStateEmitted()) && lastNotifiedStateRef.current !== state) {
460
+ if (!getIsInitial() || getIsStateEmitted()) {
449
461
  // We need to notify the state update in these scenarios:
450
462
  // 1. If it's not the initial render of the component containing the navigator
451
463
  // 2. If the container has already emitted state before the navigator mounted
@@ -458,28 +470,19 @@ export function useNavigationBuilder(createRouter, options) {
458
470
  // So only checking for the initial render is not enough.
459
471
  // We also need to propagate the navigator's initial state when it mounts later,
460
472
  // so the container is notified that the nested state is now available.
461
- //
462
- // We only notify if the state is different from what we already notified
463
- // Otherwise, this goes into a loop when inside `<Activity mode="hidden">`
464
- setState(state);
465
- lastNotifiedStateRef.current = state;
473
+ setState(savedState);
466
474
  }
467
475
  return () => {
468
476
  // We need to clean up state for this navigator on unmount
469
477
  if (getCurrentState() !== undefined && getKey() === navigatorKey) {
470
478
  setCurrentState(undefined);
471
- stateCleanupRef.current = true;
472
479
  }
473
-
474
- // Reset so that StrictMode's second mount re-propagates state correctly.
475
- // Without this, the guard above sees the same reference and skips setState,
476
- // causing the initial state to be lost after cleanup wipes the container state.
477
- lastNotifiedStateRef.current = null;
480
+ mountStateRef.current = 'unmounted';
478
481
  };
479
482
  // eslint-disable-next-line react-hooks/exhaustive-deps
480
483
  }, []);
481
484
  const getState = useLatestCallback(() => {
482
- const currentState = getCurrentState();
485
+ const currentState = mountStateRef.current === 'unmounted' ? savedStateRef.current : getCurrentState();
483
486
  return deepFreeze(isStateInitialized(currentState) ? currentState : initializedState);
484
487
  });
485
488
  const emitter = useEventEmitter(e => {
@@ -597,8 +600,8 @@ export function useNavigationBuilder(createRouter, options) {
597
600
  navigation
598
601
  });
599
602
  const descriptors = useDescriptors({
600
- routes: state.routes,
601
603
  screens,
604
+ state,
602
605
  navigation,
603
606
  screenOptions,
604
607
  screenLayout,
@@ -613,7 +616,7 @@ export function useNavigationBuilder(createRouter, options) {
613
616
  // @ts-expect-error: this should have both core and custom events, but too much work right now
614
617
  emitter
615
618
  });
616
- const NavigationContent = useComponent(children => {
619
+ const render = children => {
617
620
  const focusedRoute = state.routes[state.index];
618
621
  if (focusedRoute == null) {
619
622
  throw new Error(`Couldn't find a route at index ${state.index}.`);
@@ -645,12 +648,12 @@ export function useNavigationBuilder(createRouter, options) {
645
648
  })
646
649
  })
647
650
  });
648
- });
651
+ };
649
652
  return {
650
653
  state,
651
654
  navigation,
652
655
  descriptors,
653
- NavigationContent
656
+ render
654
657
  };
655
658
  }
656
659
  //# sourceMappingURL=useNavigationBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CommonActions","deepEqual","React","isValidElementType","useLatestCallback","ConsumedParamsContext","deepFreeze","Group","isArrayEqual","useNavigationBuilderContext","NavigationHelpersContext","NavigationMetaContext","IsScreenContext","NavigationRouteContext","NavigationStateContext","PreventRemoveProvider","Screen","PrivateValueStore","UnhandledActionContext","useChildListeners","useComponent","useDescriptors","useEventEmitter","useFocusedListenersChildrenAdapter","useFocusEvents","FocusedRouteKeyContext","useKeyedChildListeners","useLazyValue","useNavigationHelpers","NavigationStateListenerProvider","useOnAction","useOnGetNavigation","useOnGetState","useOnRouteFocus","useRegisterNavigator","useScheduleUpdate","jsx","_jsx","isNavigationState","state","Array","isArray","routes","isScreen","child","type","isGroup","Fragment","isValidKey","key","undefined","getRouteConfigsFromChildren","children","groupKeys","groupOptions","groupLayout","configs","Children","toArray","reduce","acc","isValidElement","props","Error","name","JSON","stringify","navigationKey","push","keys","options","layout","screenOptions","screenLayout","String","process","env","NODE_ENV","forEach","config","component","getComponent","console","warn","test","getStateFromParams","params","error","screen","initial","path","useNavigationBuilder","createRouter","navigatorKey","route","use","consumedParams","isNestedParamsConsumed","has","screenListeners","router","routerOverrides","rest","routeConfigs","initialRouteName","every","original","overrides","routeNames","map","length","screens","routeKeyList","routeParamList","routeGetIdList","initialParams","Object","assign","getId","isStateValid","useCallback","isStateInitialized","stale","doesStateHaveOnlyInvalidRoutes","r","includes","currentState","getState","getCurrentState","setState","setCurrentState","subscribe","setKey","getKey","getIsInitial","onEmitEvent","getIsStateEmitted","stateCleanupRef","useRef","lastStateRef","current","stateBeforeInitialization","initializedState","isFirstStateInitialization","paramsUsedForInitialization","useMemo","getRehydratedState","initialRouteParamList","curr","initialParamsFromParams","getInitialState","paramsForState","stateFromParams","hydratedState","routeNamesChangeBehavior","previousRouteKeyListRef","useInsertionEffect","previousRouteKeyList","routeKeyChanges","filter","previous","unhandledState","setUnhandledState","useState","nextState","shouldClearUnhandledState","getStateForRouteNamesChange","didConsumeNestedParams","action","reset","payload","merge","pop","updatedState","getStateForAction","names","join","useEffect","set","shouldUpdate","lastNotifiedStateRef","emitter","e","target","find","index","hasPerScreenListeners","some","listeners","descriptor","descriptors","navigation","concat","cb","i","self","lastIndexOf","listener","emit","data","childListeners","addListener","keyedListeners","addKeyedListener","onAction","actionListeners","beforeRemoveListeners","beforeRemove","routerConfigOptions","onRouteFocus","onUnhandledActionParent","onUnhandledAction","focusedListeners","focus","getStateListeners","NavigationContent","focusedRoute","element","Provider","value","isSynced"],"sourceRoot":"../../src","sources":["useNavigationBuilder.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CommonActions","deepEqual","React","isValidElementType","useLatestCallback","ConsumedParamsContext","deepFreeze","Group","isArrayEqual","useNavigationBuilderContext","NavigationHelpersContext","NavigationMetaContext","IsScreenContext","NavigationRouteContext","NavigationStateContext","PreventRemoveProvider","Screen","PrivateValueStore","UnhandledActionContext","useChildListeners","useDescriptors","useEventEmitter","useFocusedListenersChildrenAdapter","useFocusEvents","FocusedRouteKeyContext","useKeyedChildListeners","useLazyValue","useNavigationHelpers","NavigationStateListenerProvider","useOnAction","useOnGetNavigation","useOnGetState","useOnRouteFocus","useRegisterNavigator","useScheduleUpdate","jsx","_jsx","isNavigationState","state","Array","isArray","routes","isScreen","child","type","isGroup","Fragment","isValidKey","key","undefined","getRouteConfigsFromChildren","children","groupKeys","groupOptions","groupLayout","configs","Children","toArray","reduce","acc","isValidElement","props","Error","name","JSON","stringify","navigationKey","push","keys","options","layout","screenOptions","screenLayout","String","process","env","NODE_ENV","forEach","config","component","getComponent","console","warn","test","getStateFromParams","params","error","screen","initial","path","useNavigationBuilder","createRouter","navigatorKey","route","use","consumedParams","isNestedParamsConsumed","has","screenListeners","router","routerOverrides","rest","routeConfigs","initialRouteName","every","original","overrides","routeNames","map","length","screens","routeKeyList","routeParamList","routeGetIdList","initialParams","Object","assign","getId","isStateValid","useCallback","isStateInitialized","stale","doesStateHaveOnlyInvalidRoutes","r","includes","currentState","getState","getCurrentState","setState","setCurrentState","subscribe","setKey","getKey","getIsInitial","onEmitEvent","getIsStateEmitted","mountStateRef","useRef","previousStateRef","savedStateRef","current","lastState","stateBeforeInitialization","initializedState","isFirstStateInitialization","paramsUsedForInitialization","useMemo","getRehydratedState","initialRouteParamList","curr","initialParamsFromParams","getInitialState","paramsForState","stateFromParams","hydratedState","routeNamesChangeBehavior","previousRouteKeyListRef","useInsertionEffect","previousRouteKeyList","routeKeyChanges","filter","previous","unhandledState","setUnhandledState","useState","nextState","shouldClearUnhandledState","getStateForRouteNamesChange","didConsumeNestedParams","action","reset","payload","merge","pop","updatedState","getStateForAction","names","join","set","shouldUpdate","useEffect","savedState","emitter","e","target","find","index","hasPerScreenListeners","some","listeners","descriptor","descriptors","navigation","concat","cb","i","self","lastIndexOf","listener","emit","data","childListeners","addListener","keyedListeners","addKeyedListener","onAction","actionListeners","beforeRemoveListeners","beforeRemove","routerConfigOptions","onRouteFocus","onUnhandledActionParent","onUnhandledAction","focusedListeners","focus","getStateListeners","render","focusedRoute","element","Provider","value","isSynced"],"sourceRoot":"../../src","sources":["useNavigationBuilder.tsx"],"mappings":"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","ignoreList":[]}
@@ -26,93 +26,97 @@ export function useNavigationCache({
26
26
  // We use `React.useMemo` instead of `React.useRef` coz we want to invalidate it when deps change
27
27
  // In reality, these deps will rarely change, if ever
28
28
  const cache = React.useMemo(() => ({
29
- current: {}
29
+ current: {},
30
+ routeNames: {}
30
31
  }),
31
32
  // eslint-disable-next-line react-hooks/exhaustive-deps
32
- [getState, parentNavigation, navigation, setOptions, emitter]);
33
- const next = routes.reduce((acc, route) => {
34
- const previous = cache.current[route.key];
35
- if (previous) {
36
- // If a cached navigation object already exists, reuse it
37
- acc[route.key] = previous;
38
- } else {
39
- const dispatch = thunk => {
40
- withStackTrace(dispatch, () => {
41
- React.startTransition(() => {
42
- const action = typeof thunk === 'function' ? thunk(getState()) : thunk;
43
- if (action != null) {
44
- navigation.dispatch({
45
- source: route.key,
46
- ...action
47
- });
48
- }
33
+ [getState, parentNavigation, navigation, setOptions, router, emitter, withStackTrace]);
34
+ const next = React.useMemo(() => {
35
+ return routes.reduce((acc, route) => {
36
+ const previous = cache.routeNames[route.key] === route.name ? cache.current[route.key] : undefined;
37
+ if (previous) {
38
+ // If a cached navigation object already exists, reuse it
39
+ acc[route.key] = previous;
40
+ } else {
41
+ const dispatch = thunk => {
42
+ withStackTrace(dispatch, () => {
43
+ React.startTransition(() => {
44
+ const action = typeof thunk === 'function' ? thunk(getState()) : thunk;
45
+ if (action != null) {
46
+ navigation.dispatch({
47
+ source: route.key,
48
+ ...action
49
+ });
50
+ }
51
+ });
49
52
  });
50
- });
51
- };
52
- const actions = {
53
- ...router.actionCreators,
54
- ...CommonActions
55
- };
56
- const helpers = Object.keys(actions).reduce((acc, name) => {
57
- const helper = (...args) => withStackTrace(helper, () =>
58
- // @ts-expect-error: name is a valid key, but TypeScript is dumb
59
- dispatch(actions[name](...args)));
60
- acc[name] = helper;
61
- return acc;
62
- }, {});
53
+ };
54
+ const actions = {
55
+ ...router.actionCreators,
56
+ ...CommonActions
57
+ };
58
+ const helpers = Object.keys(actions).reduce((acc, name) => {
59
+ const helper = (...args) => withStackTrace(helper, () =>
60
+ // @ts-expect-error: name is a valid key, but TypeScript is dumb
61
+ dispatch(actions[name](...args)));
62
+ acc[name] = helper;
63
+ return acc;
64
+ }, {});
63
65
 
64
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
65
- const {
66
- emit,
67
- ...rest
68
- } = navigation;
69
- acc[route.key] = {
70
- ...rest,
71
- ...helpers,
72
- // FIXME: too much work to fix the types for now
73
- ...emitter.create(route.key),
74
- dispatch,
75
- getParent: routeName => {
76
- if (routeName === route.name) {
77
- // If the passed route name is the same as the current route's name,
78
- // we return the cached navigation object for the route
79
- return acc[route.key];
80
- }
81
- if (routeName !== undefined) {
82
- const parent = parentNavigation?.getParent(routeName);
83
- if (parent === undefined) {
84
- throw new Error(`Couldn't find a navigation object for '${routeName}' in current or any parent screens. Is your component inside the correct screen?`);
66
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
67
+ const {
68
+ emit,
69
+ ...rest
70
+ } = navigation;
71
+ acc[route.key] = {
72
+ ...rest,
73
+ ...helpers,
74
+ // FIXME: too much work to fix the types for now
75
+ ...emitter.create(route.key),
76
+ dispatch,
77
+ getParent: routeName => {
78
+ if (routeName === route.name) {
79
+ // If the passed route name is the same as the current route's name,
80
+ // we return the cached navigation object for the route
81
+ return acc[route.key];
85
82
  }
86
- return parent;
87
- }
88
- return parentNavigation;
89
- },
90
- setOptions: options => {
91
- setOptions(o => ({
92
- ...o,
93
- [route.key]: {
94
- ...o[route.key],
95
- ...options
83
+ if (routeName !== undefined) {
84
+ const parent = parentNavigation?.getParent(routeName);
85
+ if (parent === undefined) {
86
+ throw new Error(`Couldn't find a navigation object for '${routeName}' in current or any parent screens. Is your component inside the correct screen?`);
87
+ }
88
+ return parent;
89
+ }
90
+ return parentNavigation;
91
+ },
92
+ setOptions: options => {
93
+ setOptions(o => ({
94
+ ...o,
95
+ [route.key]: {
96
+ ...o[route.key],
97
+ ...options
98
+ }
99
+ }));
100
+ },
101
+ isFocused: () => {
102
+ const state = rest.getState();
103
+ if (state.routes[state.index]?.key !== route.key) {
104
+ return false;
96
105
  }
97
- }));
98
- },
99
- isFocused: () => {
100
- const state = rest.getState();
101
- if (state.routes[state.index]?.key !== route.key) {
102
- return false;
103
- }
104
106
 
105
- // If the current screen is focused, we also need to check if parent navigator is focused
106
- // This makes sure that we return the focus state in the whole tree, not just this navigator
107
- return navigation ? navigation.isFocused() : true;
108
- }
109
- };
110
- }
111
- return acc;
112
- }, {});
107
+ // If the current screen is focused, we also need to check if parent navigator is focused
108
+ // This makes sure that we return the focus state in the whole tree, not just this navigator
109
+ return navigation ? navigation.isFocused() : true;
110
+ }
111
+ };
112
+ }
113
+ return acc;
114
+ }, {});
115
+ }, [cache, routes, getState, navigation, router, withStackTrace, emitter, parentNavigation, setOptions]);
113
116
  React.useInsertionEffect(() => {
114
117
  cache.current = next;
115
- });
118
+ cache.routeNames = Object.fromEntries(routes.map(route => [route.key, route.name]));
119
+ }, [cache, next, routes]);
116
120
  return next;
117
121
  }
118
122
  //# sourceMappingURL=useNavigationCache.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CommonActions","React","useNavigationBuilderContext","NavigationContext","useNavigationCache","routes","getState","navigation","setOptions","router","emitter","withStackTrace","parentNavigation","use","cache","useMemo","current","next","reduce","acc","route","previous","key","dispatch","thunk","startTransition","action","source","actions","actionCreators","helpers","Object","keys","name","helper","args","emit","rest","create","getParent","routeName","undefined","parent","Error","options","o","isFocused","state","index","useInsertionEffect"],"sourceRoot":"../../src","sources":["useNavigationCache.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CommonActions","React","useNavigationBuilderContext","NavigationContext","useNavigationCache","routes","getState","navigation","setOptions","router","emitter","withStackTrace","parentNavigation","use","cache","useMemo","current","routeNames","next","reduce","acc","route","previous","key","name","undefined","dispatch","thunk","startTransition","action","source","actions","actionCreators","helpers","Object","keys","helper","args","emit","rest","create","getParent","routeName","parent","Error","options","o","isFocused","state","index","useInsertionEffect","fromEntries","map"],"sourceRoot":"../../src","sources":["useNavigationCache.tsx"],"mappings":"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","ignoreList":[]}
@@ -39,6 +39,22 @@ export function useNavigationState(...args) {
39
39
  getSnapshot,
40
40
  subscribe
41
41
  } = listener;
42
+ const initialRef = React.useRef(true);
43
+
44
+ // We read the initial state from context on mount instead of using getState
45
+ // This ensures that we get proper state for the current render,
46
+ // even if the external store has been updated.
47
+ // We conditionally use `use` to avoid more unnecessary re-renders after first mount.
48
+ // The context subscription is removed on the next render, which can cause one extra render.
49
+ const initialState = initialRef.current ? React.use(listener.initialStateContext) : undefined;
50
+
51
+ // We track the last committed reducer entry, navigation state, and selector,
52
+ // so we can check if an update changes the value the component last committed.
53
+ const committedRef = React.useRef({
54
+ entry: null,
55
+ state: initialState ?? getSnapshot(),
56
+ select
57
+ });
42
58
 
43
59
  // The store can contain state from a transition that hasn't committed yet.
44
60
  // Reading it during render can show state that doesn't match the navigator in that render.
@@ -47,7 +63,21 @@ export function useNavigationState(...args) {
47
63
  // Navigation state can change between the dispatch and the reducer running.
48
64
  // Reading here ensures the processed event uses the state for that render.
49
65
  const state = event === 'update' ? getState() : getSnapshot();
50
- if (previous.listener === listener && (previous.state === state || event === 'update' && Object.is(select(previous.state), select(state)))) {
66
+
67
+ // If we're processing the same reducer entry as the last commit,
68
+ // we compare against the state last committed by the component.
69
+ // We keep the reducer entry to avoid re-renders for unchanged selections.
70
+ // This means the reducer entry can still hold older navigation state.
71
+ // If a parent causes another render,
72
+ // we use the latest snapshot so the selector doesn't read stale state.
73
+ // We leave the reducer entry unchanged to avoid an extra render.
74
+ // We save that snapshot in committedRef when the render commits,
75
+ // so later updates compare against the state we actually rendered,
76
+ // including when the selector changed.
77
+ // If the reducer entry is different, we use its own navigation state,
78
+ // so comparisons include updates already processed in the pending render.
79
+ const previousState = previous === committedRef.current.entry ? committedRef.current.state : previous.state;
80
+ if (previous.listener === listener && (previousState === state || event === 'update' && Object.is(select(previousState), select(state)))) {
51
81
  return previous;
52
82
  }
53
83
  return {
@@ -56,33 +86,23 @@ export function useNavigationState(...args) {
56
86
  };
57
87
  }, undefined, () => ({
58
88
  listener,
59
- state: getState()
89
+ state: initialState ?? getSnapshot()
60
90
  }));
61
- let state = entry.state;
62
- const committedRef = React.useRef({
63
- entry: null,
64
- state,
65
- select
66
- });
91
+ const state =
92
+ // A different listener means the state belongs to another navigator.
93
+ // This can happen when the passed route name changes.
94
+ entry.listener !== listener ||
95
+ // An entry that advanced past the last commit is at least as new as the snapshot.
96
+ // An entry that didn't advance while the committed state changed is older.
97
+ entry === committedRef.current.entry ? getSnapshot() : entry.state;
67
98
  React.useInsertionEffect(() => {
99
+ initialRef.current = false;
68
100
  committedRef.current = {
69
101
  entry,
70
102
  state,
71
103
  select
72
104
  };
73
105
  });
74
- const snapshot = getSnapshot();
75
- const behind = state !== snapshot && (
76
- // A different listener means the state belongs to another navigator.
77
- // This can happen when the passed route name changes.
78
- entry.listener !== listener ||
79
- // An entry that advanced past the last commit is at least as new as the snapshot.
80
- // An entry that didn't advance while the committed state changed is older.
81
- entry === committedRef.current.entry);
82
- if (behind) {
83
- state = snapshot;
84
- dispatch('commit');
85
- }
86
106
  React.useLayoutEffect(() => {
87
107
  const check = event => {
88
108
  const {
@@ -113,6 +133,7 @@ export function NavigationStateListenerProvider({
113
133
  subscribe,
114
134
  children
115
135
  }) {
136
+ const [InitialStateContext] = React.useState(() => /*#__PURE__*/React.createContext(state));
116
137
  const [listeners] = React.useState(() => new Set());
117
138
  React.useLayoutEffect(() => {
118
139
  listeners.forEach(listener => listener('commit'));
@@ -128,6 +149,7 @@ export function NavigationStateListenerProvider({
128
149
  // We keep this `undefined` for other scenarios, so the context isn't recreated.
129
150
  const nextState = isSynced ? undefined : state;
130
151
  const context = React.useMemo(() => ({
152
+ initialStateContext: InitialStateContext,
131
153
  getState,
132
154
  getSnapshot: () => nextState ?? snapshotRef.current,
133
155
  subscribe: callback => {
@@ -138,10 +160,13 @@ export function NavigationStateListenerProvider({
138
160
  unsubscribe();
139
161
  };
140
162
  }
141
- }), [getState, listeners, nextState, subscribe]);
163
+ }), [InitialStateContext, getState, listeners, nextState, subscribe]);
142
164
  return /*#__PURE__*/_jsx(NavigationStateListenerContext.Provider, {
143
165
  value: context,
144
- children: children
166
+ children: /*#__PURE__*/_jsx(InitialStateContext.Provider, {
167
+ value: state,
168
+ children: children
169
+ })
145
170
  });
146
171
  }
147
172
  export function NamedNavigationStateListenerProvider({
@@ -150,7 +175,7 @@ export function NamedNavigationStateListenerProvider({
150
175
  }) {
151
176
  const listener = React.use(NavigationStateListenerContext);
152
177
  if (listener == null) {
153
- throw new Error("Couldn't find a navigation state listener. This is likely because the navigator doesn't render its content under 'NavigationContent'.");
178
+ throw new Error("Couldn't find a navigation state listener. This is likely a bug in the navigator.\n\nIf you're using a custom navigator, make sure that the navigator content is wrapped by the 'render' function returned by 'useNavigationBuilder'.");
154
179
  }
155
180
  const parents = React.use(NamedNavigationStateListenerListContext);
156
181
  const listeners = React.useMemo(() => ({