@react-navigation/core 7.21.6 → 7.21.7
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/useNavigationBuilder.js +43 -21
- package/lib/module/useNavigationBuilder.js.map +1 -1
- package/lib/module/useOnAction.js +20 -2
- package/lib/module/useOnAction.js.map +1 -1
- package/lib/typescript/src/useNavigationBuilder.d.ts.map +1 -1
- package/lib/typescript/src/useOnAction.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/useNavigationBuilder.tsx +70 -30
- package/src/useOnAction.tsx +25 -0
|
@@ -9,7 +9,6 @@ import { ConsumedParamsContext } from "./ConsumedParamsContext.js";
|
|
|
9
9
|
import { deepFreeze } from "./deepFreeze.js";
|
|
10
10
|
import { Group } from "./Group.js";
|
|
11
11
|
import { isArrayEqual } from "./isArrayEqual.js";
|
|
12
|
-
import { isRecordEqual } from "./isRecordEqual.js";
|
|
13
12
|
import { NavigationBuilderContext } from "./NavigationBuilderContext.js";
|
|
14
13
|
import { NavigationHelpersContext } from "./NavigationHelpersContext.js";
|
|
15
14
|
import { NavigationMetaContext } from "./NavigationMetaContext.js";
|
|
@@ -55,7 +54,7 @@ const isValidKey = key => key === undefined || typeof key === 'string' && key !=
|
|
|
55
54
|
*
|
|
56
55
|
* @param children React Elements to extract the config from.
|
|
57
56
|
*/
|
|
58
|
-
const getRouteConfigsFromChildren = (children,
|
|
57
|
+
const getRouteConfigsFromChildren = (children, groupKeys = [], groupOptions, groupLayout) => {
|
|
59
58
|
const configs = React.Children.toArray(children).reduce((acc, child) => {
|
|
60
59
|
if (/*#__PURE__*/React.isValidElement(child)) {
|
|
61
60
|
if (isScreen(child)) {
|
|
@@ -72,7 +71,7 @@ const getRouteConfigsFromChildren = (children, groupKey, groupOptions, groupLayo
|
|
|
72
71
|
throw new Error(`Got an invalid 'navigationKey' prop (${JSON.stringify(child.props.navigationKey)}) for the screen '${child.props.name}'. It must be a non-empty string or 'undefined'.`);
|
|
73
72
|
}
|
|
74
73
|
acc.push({
|
|
75
|
-
keys: [
|
|
74
|
+
keys: [...groupKeys, child.props.navigationKey],
|
|
76
75
|
options: groupOptions,
|
|
77
76
|
layout: groupLayout,
|
|
78
77
|
props: child.props
|
|
@@ -86,7 +85,7 @@ const getRouteConfigsFromChildren = (children, groupKey, groupOptions, groupLayo
|
|
|
86
85
|
|
|
87
86
|
// When we encounter a fragment or group, we need to dive into its children to extract the configs
|
|
88
87
|
// This is handy to conditionally define a group of screens
|
|
89
|
-
acc.push(...getRouteConfigsFromChildren(child.props.children, child.props.navigationKey,
|
|
88
|
+
acc.push(...getRouteConfigsFromChildren(child.props.children, child.props.navigationKey != null ? [...groupKeys, child.props.navigationKey] : groupKeys,
|
|
90
89
|
// FIXME
|
|
91
90
|
// @ts-expect-error: add validation
|
|
92
91
|
child.type !== Group ? groupOptions : groupOptions != null ? [...groupOptions, child.props.screenOptions] : [child.props.screenOptions], typeof child.props.screenLayout === 'function' ? child.props.screenLayout : groupLayout));
|
|
@@ -139,9 +138,15 @@ const getRouteConfigsFromChildren = (children, groupKey, groupOptions, groupLayo
|
|
|
139
138
|
}
|
|
140
139
|
return configs;
|
|
141
140
|
};
|
|
142
|
-
const getStateFromParams = params => {
|
|
141
|
+
const getStateFromParams = (params, type) => {
|
|
143
142
|
const state = params?.state;
|
|
144
143
|
if (isNavigationState(state)) {
|
|
144
|
+
if (state.type != null && state.type !== type) {
|
|
145
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
146
|
+
console.error(`The state passed in the params is for a navigator of type '${state.type}', but it was passed to a navigator of type '${type}'. This can happen if the state was meant for a different navigator. The state will be discarded.`);
|
|
147
|
+
}
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
145
150
|
return state;
|
|
146
151
|
} else if (typeof params?.screen === 'string' && params?.initial !== false) {
|
|
147
152
|
return {
|
|
@@ -205,7 +210,7 @@ export function useNavigationBuilder(createRouter, options) {
|
|
|
205
210
|
throw new Error(`A navigator cannot contain multiple 'Screen' components with the same name (found duplicate screen named '${name}')`);
|
|
206
211
|
}
|
|
207
212
|
screens[name] = config;
|
|
208
|
-
routeKeyList[name] = config.keys
|
|
213
|
+
routeKeyList[name] = config.keys;
|
|
209
214
|
routeParamList[name] = config.props.initialParams;
|
|
210
215
|
Object.assign(routeGetIdList, {
|
|
211
216
|
[name]: config.props.getId
|
|
@@ -272,7 +277,7 @@ export function useNavigationBuilder(createRouter, options) {
|
|
|
272
277
|
}), true, undefined];
|
|
273
278
|
} else {
|
|
274
279
|
const paramsForState = isNestedParamsConsumed ? undefined : route?.params;
|
|
275
|
-
const stateFromParams = paramsForState ? getStateFromParams(paramsForState) : undefined;
|
|
280
|
+
const stateFromParams = paramsForState ? getStateFromParams(paramsForState, router.type) : undefined;
|
|
276
281
|
const stateBeforeInitialization = stateFromParams ?? currentState;
|
|
277
282
|
const hydratedState = stateBeforeInitialization == null ? router.getInitialState({
|
|
278
283
|
routeNames,
|
|
@@ -283,7 +288,7 @@ export function useNavigationBuilder(createRouter, options) {
|
|
|
283
288
|
routeParamList: initialRouteParamList,
|
|
284
289
|
routeGetIdList
|
|
285
290
|
});
|
|
286
|
-
if (stateBeforeInitialization != null && options.UNSTABLE_routeNamesChangeBehavior === 'lastUnhandled' && doesStateHaveOnlyInvalidRoutes(stateBeforeInitialization)) {
|
|
291
|
+
if (stateBeforeInitialization != null && isStateValid(stateBeforeInitialization) && options.UNSTABLE_routeNamesChangeBehavior === 'lastUnhandled' && doesStateHaveOnlyInvalidRoutes(stateBeforeInitialization)) {
|
|
287
292
|
return [stateBeforeInitialization, hydratedState, true, paramsForState];
|
|
288
293
|
}
|
|
289
294
|
return [undefined, hydratedState, false,
|
|
@@ -303,6 +308,13 @@ export function useNavigationBuilder(createRouter, options) {
|
|
|
303
308
|
previousRouteKeyListRef.current = routeKeyList;
|
|
304
309
|
});
|
|
305
310
|
const previousRouteKeyList = previousRouteKeyListRef.current;
|
|
311
|
+
|
|
312
|
+
// Names of the screens whose navigation key changed since the last render
|
|
313
|
+
const routeKeyChanges = Object.keys(routeKeyList).filter(name => {
|
|
314
|
+
const current = routeKeyList[name];
|
|
315
|
+
const previous = previousRouteKeyList[name];
|
|
316
|
+
return current != null && previous != null && !isArrayEqual(current, previous);
|
|
317
|
+
});
|
|
306
318
|
const [unhandledState, setUnhandledState] = React.useState(stateBeforeInitialization);
|
|
307
319
|
|
|
308
320
|
// An unhandled state is state that didn't have any valid routes
|
|
@@ -319,44 +331,50 @@ export function useNavigationBuilder(createRouter, options) {
|
|
|
319
331
|
isStateInitialized(currentState) ? currentState : initializedState;
|
|
320
332
|
let nextState = state;
|
|
321
333
|
let shouldClearUnhandledState = false;
|
|
322
|
-
|
|
334
|
+
if (unhandledState != null && !isStateValid(unhandledState)) {
|
|
335
|
+
// The stored unhandled state is for a different type of navigator
|
|
336
|
+
// It can't be used with this navigator, so we discard it
|
|
337
|
+
setUnhandledState(undefined);
|
|
338
|
+
} else if (
|
|
323
339
|
// Previously unhandled state is now valid again
|
|
324
340
|
// And current state no longer has any valid routes
|
|
325
341
|
// We should reuse the unhandled state instead of re-calculating the state
|
|
326
|
-
|
|
342
|
+
unhandledState?.routes.every(r => routeNames.includes(r.name)) && state?.routes.every(r => !routeNames.includes(r.name))) {
|
|
327
343
|
shouldClearUnhandledState = true;
|
|
328
344
|
nextState = router.getRehydratedState(unhandledState, {
|
|
329
345
|
routeNames,
|
|
330
346
|
routeParamList,
|
|
331
347
|
routeGetIdList
|
|
332
348
|
});
|
|
333
|
-
} else if (!isArrayEqual(state.routeNames, routeNames) ||
|
|
349
|
+
} else if (!isArrayEqual(state.routeNames, routeNames) || routeKeyChanges.length !== 0) {
|
|
334
350
|
// When the list of route names change, the router should handle it to remove invalid routes
|
|
335
351
|
nextState = router.getStateForRouteNamesChange(state, {
|
|
336
352
|
routeNames,
|
|
337
353
|
routeParamList,
|
|
338
354
|
routeGetIdList,
|
|
339
|
-
routeKeyChanges
|
|
355
|
+
routeKeyChanges
|
|
340
356
|
});
|
|
341
357
|
}
|
|
342
358
|
let didConsumeNestedParams = route?.params === paramsUsedForInitialization;
|
|
343
359
|
if (route?.params && !didConsumeNestedParams) {
|
|
344
360
|
let action;
|
|
345
|
-
|
|
346
|
-
if (isNavigationState(stateFromParams) && !isNestedParamsConsumed) {
|
|
361
|
+
if (isNavigationState(route.params.state) && !isNestedParamsConsumed) {
|
|
347
362
|
didConsumeNestedParams = true;
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
363
|
+
const stateFromParams = getStateFromParams(route.params, router.type);
|
|
364
|
+
if (stateFromParams != null) {
|
|
365
|
+
if (options.UNSTABLE_routeNamesChangeBehavior === 'lastUnhandled' && doesStateHaveOnlyInvalidRoutes(stateFromParams)) {
|
|
366
|
+
if (stateFromParams !== unhandledState) {
|
|
367
|
+
setUnhandledState(stateFromParams);
|
|
368
|
+
}
|
|
369
|
+
} else {
|
|
370
|
+
// If the route was updated with new state, we should reset to it
|
|
371
|
+
action = CommonActions.reset(stateFromParams);
|
|
351
372
|
}
|
|
352
|
-
} else {
|
|
353
|
-
// If the route was updated with new state, we should reset to it
|
|
354
|
-
action = CommonActions.reset(stateFromParams);
|
|
355
373
|
}
|
|
356
374
|
} else if (typeof route.params.screen === 'string' && (route.params.initial === false && isFirstStateInitialization || !isNestedParamsConsumed)) {
|
|
357
375
|
didConsumeNestedParams = true;
|
|
358
376
|
if (options.UNSTABLE_routeNamesChangeBehavior === 'lastUnhandled' && !routeNames.includes(route.params.screen)) {
|
|
359
|
-
const state = getStateFromParams(route.params);
|
|
377
|
+
const state = getStateFromParams(route.params, router.type);
|
|
360
378
|
if (state != null && !deepEqual(state, unhandledState)) {
|
|
361
379
|
setUnhandledState(state);
|
|
362
380
|
}
|
|
@@ -381,6 +399,10 @@ export function useNavigationBuilder(createRouter, options) {
|
|
|
381
399
|
routeParamList,
|
|
382
400
|
routeGetIdList
|
|
383
401
|
}) : null;
|
|
402
|
+
if (process.env.NODE_ENV !== 'production' && action != null && updatedState === null) {
|
|
403
|
+
const names = routeNames.map(name => `'${name}'`).join(', ');
|
|
404
|
+
console.error(`The 'state' or 'screen' passed in the params couldn't be applied to the navigator with the screens: ${names}. This can happen if the params contain names of screens that don't exist in the navigator. The navigation specified in the params will be ignored.`);
|
|
405
|
+
}
|
|
384
406
|
nextState = updatedState !== null ? router.getRehydratedState(updatedState, {
|
|
385
407
|
routeNames,
|
|
386
408
|
routeParamList,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CommonActions","deepEqual","React","isValidElementType","useLatestCallback","ConsumedParamsContext","deepFreeze","Group","isArrayEqual","isRecordEqual","NavigationBuilderContext","NavigationHelpersContext","NavigationMetaContext","NavigationRouteContext","NavigationStateContext","PreventRemoveProvider","Screen","PrivateValueStore","UnhandledActionContext","useChildListeners","useComponent","useCurrentRender","useDescriptors","useEventEmitter","useFocusedListenersChildrenAdapter","useFocusEvents","FocusedRouteKeyContext","useKeyedChildListeners","useLazyValue","useNavigationHelpers","NavigationStateListenerProvider","useOnAction","useOnGetState","useOnRouteFocus","useRegisterNavigator","useScheduleUpdate","jsx","_jsx","isNavigationState","state","Array","isArray","routes","isScreen","child","type","isGroup","Fragment","isValidKey","key","undefined","getRouteConfigsFromChildren","children","groupKey","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","screen","initial","path","useNavigationBuilder","createRouter","navigatorKey","route","useContext","consumedParams","isNestedParamsConsumed","has","screenListeners","UNSTABLE_router","rest","routeConfigs","router","initialRouteName","every","original","overrides","routeNames","map","length","screens","routeKeyList","routeParamList","routeGetIdList","join","initialParams","Object","assign","getId","isStateValid","useCallback","isStateInitialized","stale","doesStateHaveOnlyInvalidRoutes","r","includes","currentState","getState","getCurrentState","setState","setCurrentState","setKey","getKey","getIsInitial","stateCleanupRef","useRef","lastStateRef","current","stateBeforeInitialization","initializedState","isFirstStateInitialization","paramsUsedForInitialization","useMemo","getRehydratedState","initialRouteParamList","curr","initialParamsFromParams","getInitialState","paramsForState","stateFromParams","hydratedState","UNSTABLE_routeNamesChangeBehavior","previousRouteKeyListRef","useInsertionEffect","previousRouteKeyList","unhandledState","setUnhandledState","useState","nextState","shouldClearUnhandledState","getStateForRouteNamesChange","routeKeyChanges","filter","didConsumeNestedParams","action","reset","payload","merge","pop","updatedState","getStateForAction","useEffect","set","shouldUpdate","lastNotifiedStateRef","onEmitEvent","emitter","e","target","find","index","hasPerScreenListeners","some","listeners","navigation","descriptors","concat","cb","i","self","lastIndexOf","listener","emit","data","childListeners","addListener","keyedListeners","addKeyedListener","onAction","actionListeners","beforeRemoveListeners","beforeRemove","routerConfigOptions","onRouteFocus","onUnhandledActionParent","onUnhandledAction","id","focusedListeners","focus","getStateListeners","describe","NavigationContent","element","Provider","value"],"sourceRoot":"../../src","sources":["useNavigationBuilder.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["CommonActions","deepEqual","React","isValidElementType","useLatestCallback","ConsumedParamsContext","deepFreeze","Group","isArrayEqual","NavigationBuilderContext","NavigationHelpersContext","NavigationMetaContext","NavigationRouteContext","NavigationStateContext","PreventRemoveProvider","Screen","PrivateValueStore","UnhandledActionContext","useChildListeners","useComponent","useCurrentRender","useDescriptors","useEventEmitter","useFocusedListenersChildrenAdapter","useFocusEvents","FocusedRouteKeyContext","useKeyedChildListeners","useLazyValue","useNavigationHelpers","NavigationStateListenerProvider","useOnAction","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","useContext","consumedParams","isNestedParamsConsumed","has","screenListeners","UNSTABLE_router","rest","routeConfigs","router","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","setKey","getKey","getIsInitial","stateCleanupRef","useRef","lastStateRef","current","stateBeforeInitialization","initializedState","isFirstStateInitialization","paramsUsedForInitialization","useMemo","getRehydratedState","initialRouteParamList","curr","initialParamsFromParams","getInitialState","paramsForState","stateFromParams","hydratedState","UNSTABLE_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","onEmitEvent","emitter","e","target","find","index","hasPerScreenListeners","some","listeners","navigation","descriptors","concat","cb","i","self","lastIndexOf","listener","emit","data","childListeners","addListener","keyedListeners","addKeyedListener","onAction","actionListeners","beforeRemoveListeners","beforeRemove","routerConfigOptions","onRouteFocus","onUnhandledActionParent","onUnhandledAction","id","focusedListeners","focus","getStateListeners","describe","NavigationContent","element","Provider","value"],"sourceRoot":"../../src","sources":["useNavigationBuilder.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -27,7 +27,8 @@ export function useOnAction({
|
|
|
27
27
|
onAction: onActionParent,
|
|
28
28
|
onRouteFocus: onRouteFocusParent,
|
|
29
29
|
addListener: addListenerParent,
|
|
30
|
-
onDispatchAction
|
|
30
|
+
onDispatchAction,
|
|
31
|
+
flushUpdates
|
|
31
32
|
} = React.useContext(NavigationBuilderContext);
|
|
32
33
|
const navigationInChildEnabled = React.useContext(DeprecatedNavigationInChildContext);
|
|
33
34
|
const routerConfigOptionsRef = React.useRef(routerConfigOptions);
|
|
@@ -35,6 +36,10 @@ export function useOnAction({
|
|
|
35
36
|
routerConfigOptionsRef.current = routerConfigOptions;
|
|
36
37
|
});
|
|
37
38
|
const onAction = React.useCallback((action, visitedNavigators = new Set()) => {
|
|
39
|
+
// Apply any pending state updates scheduled during render before handling the action
|
|
40
|
+
// Otherwise the action will be handled with an outdated state,
|
|
41
|
+
// and the pending updates will overwrite the changes from the action
|
|
42
|
+
flushUpdates();
|
|
38
43
|
const state = getState();
|
|
39
44
|
|
|
40
45
|
// Since actions can bubble both up and down, they could come to the same navigator again
|
|
@@ -49,6 +54,13 @@ export function useOnAction({
|
|
|
49
54
|
// If a target is specified and set to current navigator, the action shouldn't bubble
|
|
50
55
|
// So instead of `null`, we use the state object for such cases to signal that action was handled
|
|
51
56
|
result = result === null && action.target === state.key ? state : result;
|
|
57
|
+
if (result !== null && result.stale !== false) {
|
|
58
|
+
// Some actions (e.g. `RESET`) may return a stale state from the router
|
|
59
|
+
// We rehydrate it before storing so the stored state is always usable
|
|
60
|
+
// Otherwise anything reading the state before the next render
|
|
61
|
+
// (e.g. another dispatch immediately after) would get an outdated state
|
|
62
|
+
result = router.getRehydratedState(result, routerConfigOptionsRef.current);
|
|
63
|
+
}
|
|
52
64
|
if (result !== null) {
|
|
53
65
|
if (state !== result) {
|
|
54
66
|
const isPrevented = shouldPreventRemove(emitter, beforeRemoveListeners, state.routes, result.routes, action);
|
|
@@ -56,6 +68,12 @@ export function useOnAction({
|
|
|
56
68
|
onDispatchAction(action, true);
|
|
57
69
|
return true;
|
|
58
70
|
}
|
|
71
|
+
if (getState() !== state) {
|
|
72
|
+
// Listeners for 'beforeRemove' may dispatch actions that change the state
|
|
73
|
+
// Then the result we have is outdated and would overwrite those changes
|
|
74
|
+
// So we handle the action again to calculate the result with the latest state
|
|
75
|
+
return onAction(action, new Set());
|
|
76
|
+
}
|
|
59
77
|
onDispatchAction(action, false);
|
|
60
78
|
setState(result);
|
|
61
79
|
} else {
|
|
@@ -91,7 +109,7 @@ export function useOnAction({
|
|
|
91
109
|
}
|
|
92
110
|
}
|
|
93
111
|
return false;
|
|
94
|
-
}, [actionListeners, beforeRemoveListeners, emitter, getState, navigationInChildEnabled, key, onActionParent, onDispatchAction, onRouteFocusParent, router, setState]);
|
|
112
|
+
}, [actionListeners, beforeRemoveListeners, emitter, flushUpdates, getState, navigationInChildEnabled, key, onActionParent, onDispatchAction, onRouteFocusParent, router, setState]);
|
|
95
113
|
useOnPreventRemove({
|
|
96
114
|
getState,
|
|
97
115
|
emitter,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","DeprecatedNavigationInChildContext","NavigationBuilderContext","shouldPreventRemove","useOnPreventRemove","useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","useContext","navigationInChildEnabled","routerConfigOptionsRef","useRef","useInsertionEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","isPrevented","routes","undefined","shouldFocus","shouldActionChangeFocus","type","i","length","listener","useEffect"],"sourceRoot":"../../src","sources":["useOnAction.tsx"],"mappings":";;AAOA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,kCAAkC,QAAQ,yCAAsC;AACzF,SAGEC,wBAAwB,QACnB,+BAA4B;AAGnC,SAASC,mBAAmB,EAAEC,kBAAkB,QAAQ,yBAAsB;AAa9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAgC;EACzDC,MAAM;EACNC,QAAQ;EACRC,QAAQ;EACRC,GAAG;EACHC,eAAe;EACfC,qBAAqB;EACrBC,mBAAmB;EACnBC;AACc,CAAC,EAAE;EACjB,MAAM;IACJC,QAAQ,EAAEC,cAAc;IACxBC,YAAY,EAAEC,kBAAkB;IAChCC,WAAW,EAAEC,iBAAiB;IAC9BC;EACF,CAAC,
|
|
1
|
+
{"version":3,"names":["React","DeprecatedNavigationInChildContext","NavigationBuilderContext","shouldPreventRemove","useOnPreventRemove","useOnAction","router","getState","setState","key","actionListeners","beforeRemoveListeners","routerConfigOptions","emitter","onAction","onActionParent","onRouteFocus","onRouteFocusParent","addListener","addListenerParent","onDispatchAction","flushUpdates","useContext","navigationInChildEnabled","routerConfigOptionsRef","useRef","useInsertionEffect","current","useCallback","action","visitedNavigators","Set","state","has","add","target","result","getStateForAction","stale","getRehydratedState","isPrevented","routes","undefined","shouldFocus","shouldActionChangeFocus","type","i","length","listener","useEffect"],"sourceRoot":"../../src","sources":["useOnAction.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavigationBuilder.d.ts","sourceRoot":"","sources":["../../../src/useNavigationBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EAIjB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useNavigationBuilder.d.ts","sourceRoot":"","sources":["../../../src/useNavigationBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EAIjB,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,OAAO,EACL,KAAK,uBAAuB,EAE5B,KAAK,YAAY,EAEjB,iBAAiB,EAElB,MAAM,YAAS,CAAC;AA+RjB;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,SAAS,eAAe,EAC7B,aAAa,SAAS,oBAAoB,EAC1C,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,EAC5D,aAAa,SAAS,EAAE,EACxB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEpC,YAAY,EAAE,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,EACnE,OAAO,EAAE,uBAAuB,CAC9B,aAAa,EACb,MAAM,GAAG,SAAS,EAClB,KAAK,EACL,aAAa,EACb,QAAQ,EACR,GAAG,CACJ,GACC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAktBhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnAction.d.ts","sourceRoot":"","sources":["../../../src/useOnAction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,MAAM,EACN,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAE/B,MAAM,+BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAmB,CAAC;AAGhE,KAAK,OAAO,CAAC,KAAK,SAAS,eAAe,IAAI;IAC5C,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IACvD,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC,CAAC;IAC7E,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,OAAO,EAAE,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;CACpD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,SAAS,eAAe,EAAE,EACzD,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,OAAO,GACR,EAAE,OAAO,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"useOnAction.d.ts","sourceRoot":"","sources":["../../../src/useOnAction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,MAAM,EACN,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAE/B,MAAM,+BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAmB,CAAC;AAGhE,KAAK,OAAO,CAAC,KAAK,SAAS,eAAe,IAAI;IAC5C,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IACvD,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC,CAAC;IAC7E,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,OAAO,EAAE,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;CACpD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,SAAS,eAAe,EAAE,EACzD,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,OAAO,GACR,EAAE,OAAO,CAAC,KAAK,CAAC,YAqBH,gBAAgB,sBACL,GAAG,CAAC,MAAM,CAAC,aA0InC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-navigation/core",
|
|
3
3
|
"description": "Core utilities for building navigators",
|
|
4
|
-
"version": "7.21.
|
|
4
|
+
"version": "7.21.7",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
7
7
|
"react-native",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"clean": "del lib"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@react-navigation/routers": "^7.6.
|
|
43
|
+
"@react-navigation/routers": "^7.6.2",
|
|
44
44
|
"escape-string-regexp": "^4.0.0",
|
|
45
45
|
"fast-deep-equal": "^3.1.3",
|
|
46
46
|
"nanoid": "^3.3.11",
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
]
|
|
84
84
|
]
|
|
85
85
|
},
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "449fee23ff8ebf226dad3328d711d1b95734d23b"
|
|
87
87
|
}
|
|
@@ -19,7 +19,6 @@ import { ConsumedParamsContext } from './ConsumedParamsContext';
|
|
|
19
19
|
import { deepFreeze } from './deepFreeze';
|
|
20
20
|
import { Group } from './Group';
|
|
21
21
|
import { isArrayEqual } from './isArrayEqual';
|
|
22
|
-
import { isRecordEqual } from './isRecordEqual';
|
|
23
22
|
import { NavigationBuilderContext } from './NavigationBuilderContext';
|
|
24
23
|
import { NavigationHelpersContext } from './NavigationHelpersContext';
|
|
25
24
|
import { NavigationMetaContext } from './NavigationMetaContext';
|
|
@@ -105,7 +104,7 @@ const getRouteConfigsFromChildren = <
|
|
|
105
104
|
EventMap extends EventMapBase,
|
|
106
105
|
>(
|
|
107
106
|
children: React.ReactNode,
|
|
108
|
-
|
|
107
|
+
groupKeys: string[] = [],
|
|
109
108
|
groupOptions?: ScreenConfigWithParent<
|
|
110
109
|
State,
|
|
111
110
|
ScreenOptions,
|
|
@@ -148,7 +147,7 @@ const getRouteConfigsFromChildren = <
|
|
|
148
147
|
}
|
|
149
148
|
|
|
150
149
|
acc.push({
|
|
151
|
-
keys: [
|
|
150
|
+
keys: [...groupKeys, child.props.navigationKey],
|
|
152
151
|
options: groupOptions,
|
|
153
152
|
layout: groupLayout,
|
|
154
153
|
props: child.props as RouteConfig<
|
|
@@ -178,7 +177,9 @@ const getRouteConfigsFromChildren = <
|
|
|
178
177
|
acc.push(
|
|
179
178
|
...getRouteConfigsFromChildren<State, ScreenOptions, EventMap>(
|
|
180
179
|
child.props.children as React.ReactNode,
|
|
181
|
-
child.props.navigationKey
|
|
180
|
+
child.props.navigationKey != null
|
|
181
|
+
? [...groupKeys, child.props.navigationKey]
|
|
182
|
+
: groupKeys,
|
|
182
183
|
// FIXME
|
|
183
184
|
// @ts-expect-error: add validation
|
|
184
185
|
child.type !== Group
|
|
@@ -286,10 +287,23 @@ const getRouteConfigsFromChildren = <
|
|
|
286
287
|
return configs;
|
|
287
288
|
};
|
|
288
289
|
|
|
289
|
-
const getStateFromParams = (
|
|
290
|
+
const getStateFromParams = (
|
|
291
|
+
params: NavigatorRoute['params'],
|
|
292
|
+
type: string
|
|
293
|
+
): NavigationState | PartialState<NavigationState> | undefined => {
|
|
290
294
|
const state = params?.state;
|
|
291
295
|
|
|
292
296
|
if (isNavigationState(state)) {
|
|
297
|
+
if (state.type != null && state.type !== type) {
|
|
298
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
299
|
+
console.error(
|
|
300
|
+
`The state passed in the params is for a navigator of type '${state.type}', but it was passed to a navigator of type '${type}'. This can happen if the state was meant for a different navigator. The state will be discarded.`
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
return undefined;
|
|
305
|
+
}
|
|
306
|
+
|
|
293
307
|
return state;
|
|
294
308
|
} else if (typeof params?.screen === 'string' && params?.initial !== false) {
|
|
295
309
|
return {
|
|
@@ -399,7 +413,7 @@ export function useNavigationBuilder<
|
|
|
399
413
|
ScreenConfigWithParent<State, ScreenOptions, EventMap>
|
|
400
414
|
> = {};
|
|
401
415
|
|
|
402
|
-
const routeKeyList: Record<string,
|
|
416
|
+
const routeKeyList: Record<string, (string | undefined)[]> = {};
|
|
403
417
|
const routeParamList: Record<string, object | undefined> = {};
|
|
404
418
|
const routeGetIdList: RouterConfigOptions['routeGetIdList'] = {};
|
|
405
419
|
|
|
@@ -413,7 +427,7 @@ export function useNavigationBuilder<
|
|
|
413
427
|
}
|
|
414
428
|
|
|
415
429
|
screens[name] = config;
|
|
416
|
-
routeKeyList[name] = config.keys
|
|
430
|
+
routeKeyList[name] = config.keys;
|
|
417
431
|
routeParamList[name] = config.props.initialParams;
|
|
418
432
|
|
|
419
433
|
Object.assign(routeGetIdList, { [name]: config.props.getId });
|
|
@@ -547,7 +561,7 @@ export function useNavigationBuilder<
|
|
|
547
561
|
} else {
|
|
548
562
|
const paramsForState = isNestedParamsConsumed ? undefined : route?.params;
|
|
549
563
|
const stateFromParams = paramsForState
|
|
550
|
-
? getStateFromParams(paramsForState)
|
|
564
|
+
? getStateFromParams(paramsForState, router.type)
|
|
551
565
|
: undefined;
|
|
552
566
|
|
|
553
567
|
const stateBeforeInitialization = (stateFromParams ?? currentState) as
|
|
@@ -569,6 +583,7 @@ export function useNavigationBuilder<
|
|
|
569
583
|
|
|
570
584
|
if (
|
|
571
585
|
stateBeforeInitialization != null &&
|
|
586
|
+
isStateValid(stateBeforeInitialization) &&
|
|
572
587
|
options.UNSTABLE_routeNamesChangeBehavior === 'lastUnhandled' &&
|
|
573
588
|
doesStateHaveOnlyInvalidRoutes(stateBeforeInitialization)
|
|
574
589
|
) {
|
|
@@ -600,6 +615,16 @@ export function useNavigationBuilder<
|
|
|
600
615
|
|
|
601
616
|
const previousRouteKeyList = previousRouteKeyListRef.current;
|
|
602
617
|
|
|
618
|
+
// Names of the screens whose navigation key changed since the last render
|
|
619
|
+
const routeKeyChanges = Object.keys(routeKeyList).filter((name) => {
|
|
620
|
+
const current = routeKeyList[name];
|
|
621
|
+
const previous = previousRouteKeyList[name];
|
|
622
|
+
|
|
623
|
+
return (
|
|
624
|
+
current != null && previous != null && !isArrayEqual(current, previous)
|
|
625
|
+
);
|
|
626
|
+
});
|
|
627
|
+
|
|
603
628
|
const [unhandledState, setUnhandledState] = React.useState<
|
|
604
629
|
NavigationState | PartialState<NavigationState> | undefined
|
|
605
630
|
>(stateBeforeInitialization);
|
|
@@ -627,10 +652,14 @@ export function useNavigationBuilder<
|
|
|
627
652
|
let nextState: State = state;
|
|
628
653
|
let shouldClearUnhandledState = false;
|
|
629
654
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
655
|
+
if (unhandledState != null && !isStateValid(unhandledState)) {
|
|
656
|
+
// The stored unhandled state is for a different type of navigator
|
|
657
|
+
// It can't be used with this navigator, so we discard it
|
|
658
|
+
setUnhandledState(undefined);
|
|
659
|
+
} else if (
|
|
660
|
+
// Previously unhandled state is now valid again
|
|
661
|
+
// And current state no longer has any valid routes
|
|
662
|
+
// We should reuse the unhandled state instead of re-calculating the state
|
|
634
663
|
unhandledState?.routes.every((r) => routeNames.includes(r.name)) &&
|
|
635
664
|
state?.routes.every((r) => !routeNames.includes(r.name))
|
|
636
665
|
) {
|
|
@@ -645,18 +674,14 @@ export function useNavigationBuilder<
|
|
|
645
674
|
);
|
|
646
675
|
} else if (
|
|
647
676
|
!isArrayEqual(state.routeNames, routeNames) ||
|
|
648
|
-
|
|
677
|
+
routeKeyChanges.length !== 0
|
|
649
678
|
) {
|
|
650
679
|
// When the list of route names change, the router should handle it to remove invalid routes
|
|
651
680
|
nextState = router.getStateForRouteNamesChange(state, {
|
|
652
681
|
routeNames,
|
|
653
682
|
routeParamList,
|
|
654
683
|
routeGetIdList,
|
|
655
|
-
routeKeyChanges
|
|
656
|
-
(name) =>
|
|
657
|
-
name in previousRouteKeyList &&
|
|
658
|
-
routeKeyList[name] !== previousRouteKeyList[name]
|
|
659
|
-
),
|
|
684
|
+
routeKeyChanges,
|
|
660
685
|
});
|
|
661
686
|
}
|
|
662
687
|
|
|
@@ -664,21 +689,24 @@ export function useNavigationBuilder<
|
|
|
664
689
|
|
|
665
690
|
if (route?.params && !didConsumeNestedParams) {
|
|
666
691
|
let action: CommonActions.Action | undefined;
|
|
667
|
-
const stateFromParams = route.params.state;
|
|
668
692
|
|
|
669
|
-
if (isNavigationState(
|
|
693
|
+
if (isNavigationState(route.params.state) && !isNestedParamsConsumed) {
|
|
670
694
|
didConsumeNestedParams = true;
|
|
671
695
|
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
696
|
+
const stateFromParams = getStateFromParams(route.params, router.type);
|
|
697
|
+
|
|
698
|
+
if (stateFromParams != null) {
|
|
699
|
+
if (
|
|
700
|
+
options.UNSTABLE_routeNamesChangeBehavior === 'lastUnhandled' &&
|
|
701
|
+
doesStateHaveOnlyInvalidRoutes(stateFromParams)
|
|
702
|
+
) {
|
|
703
|
+
if (stateFromParams !== unhandledState) {
|
|
704
|
+
setUnhandledState(stateFromParams);
|
|
705
|
+
}
|
|
706
|
+
} else {
|
|
707
|
+
// If the route was updated with new state, we should reset to it
|
|
708
|
+
action = CommonActions.reset(stateFromParams);
|
|
678
709
|
}
|
|
679
|
-
} else {
|
|
680
|
-
// If the route was updated with new state, we should reset to it
|
|
681
|
-
action = CommonActions.reset(stateFromParams);
|
|
682
710
|
}
|
|
683
711
|
} else if (
|
|
684
712
|
typeof route.params.screen === 'string' &&
|
|
@@ -691,7 +719,7 @@ export function useNavigationBuilder<
|
|
|
691
719
|
options.UNSTABLE_routeNamesChangeBehavior === 'lastUnhandled' &&
|
|
692
720
|
!routeNames.includes(route.params.screen)
|
|
693
721
|
) {
|
|
694
|
-
const state = getStateFromParams(route.params);
|
|
722
|
+
const state = getStateFromParams(route.params, router.type);
|
|
695
723
|
|
|
696
724
|
if (state != null && !deepEqual(state, unhandledState)) {
|
|
697
725
|
setUnhandledState(state);
|
|
@@ -720,6 +748,18 @@ export function useNavigationBuilder<
|
|
|
720
748
|
})
|
|
721
749
|
: null;
|
|
722
750
|
|
|
751
|
+
if (
|
|
752
|
+
process.env.NODE_ENV !== 'production' &&
|
|
753
|
+
action != null &&
|
|
754
|
+
updatedState === null
|
|
755
|
+
) {
|
|
756
|
+
const names = routeNames.map((name) => `'${name}'`).join(', ');
|
|
757
|
+
|
|
758
|
+
console.error(
|
|
759
|
+
`The 'state' or 'screen' passed in the params couldn't be applied to the navigator with the screens: ${names}. This can happen if the params contain names of screens that don't exist in the navigator. The navigation specified in the params will be ignored.`
|
|
760
|
+
);
|
|
761
|
+
}
|
|
762
|
+
|
|
723
763
|
nextState =
|
|
724
764
|
updatedState !== null
|
|
725
765
|
? router.getRehydratedState(updatedState, {
|
package/src/useOnAction.tsx
CHANGED
|
@@ -52,6 +52,7 @@ export function useOnAction<State extends NavigationState>({
|
|
|
52
52
|
onRouteFocus: onRouteFocusParent,
|
|
53
53
|
addListener: addListenerParent,
|
|
54
54
|
onDispatchAction,
|
|
55
|
+
flushUpdates,
|
|
55
56
|
} = React.useContext(NavigationBuilderContext);
|
|
56
57
|
const navigationInChildEnabled = React.useContext(
|
|
57
58
|
DeprecatedNavigationInChildContext
|
|
@@ -69,6 +70,11 @@ export function useOnAction<State extends NavigationState>({
|
|
|
69
70
|
action: NavigationAction,
|
|
70
71
|
visitedNavigators: Set<string> = new Set<string>()
|
|
71
72
|
) => {
|
|
73
|
+
// Apply any pending state updates scheduled during render before handling the action
|
|
74
|
+
// Otherwise the action will be handled with an outdated state,
|
|
75
|
+
// and the pending updates will overwrite the changes from the action
|
|
76
|
+
flushUpdates();
|
|
77
|
+
|
|
72
78
|
const state = getState();
|
|
73
79
|
|
|
74
80
|
// Since actions can bubble both up and down, they could come to the same navigator again
|
|
@@ -91,6 +97,17 @@ export function useOnAction<State extends NavigationState>({
|
|
|
91
97
|
result =
|
|
92
98
|
result === null && action.target === state.key ? state : result;
|
|
93
99
|
|
|
100
|
+
if (result !== null && result.stale !== false) {
|
|
101
|
+
// Some actions (e.g. `RESET`) may return a stale state from the router
|
|
102
|
+
// We rehydrate it before storing so the stored state is always usable
|
|
103
|
+
// Otherwise anything reading the state before the next render
|
|
104
|
+
// (e.g. another dispatch immediately after) would get an outdated state
|
|
105
|
+
result = router.getRehydratedState(
|
|
106
|
+
result,
|
|
107
|
+
routerConfigOptionsRef.current
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
|
|
94
111
|
if (result !== null) {
|
|
95
112
|
if (state !== result) {
|
|
96
113
|
const isPrevented = shouldPreventRemove(
|
|
@@ -107,6 +124,13 @@ export function useOnAction<State extends NavigationState>({
|
|
|
107
124
|
return true;
|
|
108
125
|
}
|
|
109
126
|
|
|
127
|
+
if (getState() !== state) {
|
|
128
|
+
// Listeners for 'beforeRemove' may dispatch actions that change the state
|
|
129
|
+
// Then the result we have is outdated and would overwrite those changes
|
|
130
|
+
// So we handle the action again to calculate the result with the latest state
|
|
131
|
+
return onAction(action, new Set<string>());
|
|
132
|
+
}
|
|
133
|
+
|
|
110
134
|
onDispatchAction(action, false);
|
|
111
135
|
|
|
112
136
|
setState(result);
|
|
@@ -158,6 +182,7 @@ export function useOnAction<State extends NavigationState>({
|
|
|
158
182
|
actionListeners,
|
|
159
183
|
beforeRemoveListeners,
|
|
160
184
|
emitter,
|
|
185
|
+
flushUpdates,
|
|
161
186
|
getState,
|
|
162
187
|
navigationInChildEnabled,
|
|
163
188
|
key,
|