@react-navigation/core 8.0.0-alpha.7 → 8.0.0-alpha.8

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 (33) hide show
  1. package/lib/module/ConsumedParamsContext.js +5 -0
  2. package/lib/module/ConsumedParamsContext.js.map +1 -0
  3. package/lib/module/SceneView.js +25 -16
  4. package/lib/module/SceneView.js.map +1 -1
  5. package/lib/module/StaticNavigation.js +14 -3
  6. package/lib/module/StaticNavigation.js.map +1 -1
  7. package/lib/module/createNavigatorFactory.js +22 -1
  8. package/lib/module/createNavigatorFactory.js.map +1 -1
  9. package/lib/module/index.js +1 -1
  10. package/lib/module/index.js.map +1 -1
  11. package/lib/module/types.js.map +1 -1
  12. package/lib/module/useNavigationBuilder.js +7 -8
  13. package/lib/module/useNavigationBuilder.js.map +1 -1
  14. package/lib/typescript/src/ConsumedParamsContext.d.ts +8 -0
  15. package/lib/typescript/src/ConsumedParamsContext.d.ts.map +1 -0
  16. package/lib/typescript/src/SceneView.d.ts.map +1 -1
  17. package/lib/typescript/src/StaticNavigation.d.ts +21 -14
  18. package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
  19. package/lib/typescript/src/createNavigatorFactory.d.ts +1 -1
  20. package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
  21. package/lib/typescript/src/index.d.ts +1 -1
  22. package/lib/typescript/src/index.d.ts.map +1 -1
  23. package/lib/typescript/src/types.d.ts +13 -3
  24. package/lib/typescript/src/types.d.ts.map +1 -1
  25. package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
  26. package/package.json +2 -2
  27. package/src/ConsumedParamsContext.tsx +10 -0
  28. package/src/SceneView.tsx +29 -18
  29. package/src/StaticNavigation.tsx +45 -23
  30. package/src/createNavigatorFactory.tsx +35 -4
  31. package/src/index.tsx +0 -1
  32. package/src/types.tsx +46 -18
  33. package/src/useNavigationBuilder.tsx +9 -9
@@ -15,6 +15,7 @@ import * as React from 'react';
15
15
  import { isValidElementType } from 'react-is';
16
16
  import useLatestCallback from 'use-latest-callback';
17
17
 
18
+ import { ConsumedParamsContext } from './ConsumedParamsContext';
18
19
  import { deepFreeze } from './deepFreeze';
19
20
  import { Group } from './Group';
20
21
  import { isArrayEqual } from './isArrayEqual';
@@ -62,8 +63,6 @@ type NavigatorRoute = {
62
63
  params?: NavigatorScreenParams<ParamListBase> | undefined;
63
64
  };
64
65
 
65
- const CONSUMED_PARAMS = Symbol('CONSUMED_PARAMS');
66
-
67
66
  const isScreen = (
68
67
  child: React.ReactElement<unknown>
69
68
  ): child is React.ReactElement<{
@@ -325,10 +324,11 @@ export function useNavigationBuilder<
325
324
 
326
325
  const route = React.use(NavigationRouteContext) as NavigatorRoute | undefined;
327
326
 
327
+ const consumedParams = React.use(ConsumedParamsContext);
328
+
328
329
  const isNestedParamsConsumed =
329
330
  typeof route?.params === 'object' && route.params != null
330
- ? CONSUMED_PARAMS in route.params &&
331
- route.params[CONSUMED_PARAMS] === route.params
331
+ ? consumedParams?.ref?.deref() === route.params
332
332
  : false;
333
333
 
334
334
  const {
@@ -722,20 +722,20 @@ export function useNavigationBuilder<
722
722
  : nextState;
723
723
  }
724
724
 
725
+ const setConsumedParamsRef = consumedParams?.setRef;
726
+
725
727
  React.useEffect(() => {
726
728
  if (
729
+ setConsumedParamsRef &&
727
730
  didConsumeNestedParams &&
728
731
  typeof route?.params === 'object' &&
729
732
  route.params != null
730
733
  ) {
731
734
  // Track whether the params have been already consumed
732
735
  // Set it to the same object, so merged params can be handled again
733
- Object.defineProperty(route.params, CONSUMED_PARAMS, {
734
- value: route.params,
735
- enumerable: false,
736
- });
736
+ setConsumedParamsRef(new WeakRef(route.params));
737
737
  }
738
- }, [didConsumeNestedParams, route?.params]);
738
+ }, [didConsumeNestedParams, route?.params, setConsumedParamsRef]);
739
739
 
740
740
  const shouldUpdate = state !== nextState;
741
741