@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.
- package/lib/module/ConsumedParamsContext.js +5 -0
- package/lib/module/ConsumedParamsContext.js.map +1 -0
- package/lib/module/SceneView.js +25 -16
- package/lib/module/SceneView.js.map +1 -1
- package/lib/module/StaticNavigation.js +14 -3
- package/lib/module/StaticNavigation.js.map +1 -1
- package/lib/module/createNavigatorFactory.js +22 -1
- package/lib/module/createNavigatorFactory.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/useNavigationBuilder.js +7 -8
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/typescript/src/ConsumedParamsContext.d.ts +8 -0
- package/lib/typescript/src/ConsumedParamsContext.d.ts.map +1 -0
- package/lib/typescript/src/SceneView.d.ts.map +1 -1
- package/lib/typescript/src/StaticNavigation.d.ts +21 -14
- package/lib/typescript/src/StaticNavigation.d.ts.map +1 -1
- package/lib/typescript/src/createNavigatorFactory.d.ts +1 -1
- package/lib/typescript/src/createNavigatorFactory.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +13 -3
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/ConsumedParamsContext.tsx +10 -0
- package/src/SceneView.tsx +29 -18
- package/src/StaticNavigation.tsx +45 -23
- package/src/createNavigatorFactory.tsx +35 -4
- package/src/index.tsx +0 -1
- package/src/types.tsx +46 -18
- 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
|
-
?
|
|
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
|
-
|
|
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
|
|