@react-navigation/stack 7.0.0-alpha.7 → 7.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 (41) hide show
  1. package/lib/commonjs/navigators/createStackNavigator.js +4 -0
  2. package/lib/commonjs/navigators/createStackNavigator.js.map +1 -1
  3. package/lib/commonjs/views/Header/HeaderContainer.js +1 -1
  4. package/lib/commonjs/views/Header/HeaderContainer.js.map +1 -1
  5. package/lib/commonjs/views/Stack/Card.js +12 -9
  6. package/lib/commonjs/views/Stack/Card.js.map +1 -1
  7. package/lib/commonjs/views/Stack/CardContainer.js +4 -5
  8. package/lib/commonjs/views/Stack/CardContainer.js.map +1 -1
  9. package/lib/commonjs/views/Stack/CardStack.js +29 -20
  10. package/lib/commonjs/views/Stack/CardStack.js.map +1 -1
  11. package/lib/commonjs/views/Stack/StackView.js +20 -26
  12. package/lib/commonjs/views/Stack/StackView.js.map +1 -1
  13. package/lib/module/navigators/createStackNavigator.js +4 -0
  14. package/lib/module/navigators/createStackNavigator.js.map +1 -1
  15. package/lib/module/views/Header/HeaderContainer.js +2 -2
  16. package/lib/module/views/Header/HeaderContainer.js.map +1 -1
  17. package/lib/module/views/Stack/Card.js +12 -9
  18. package/lib/module/views/Stack/Card.js.map +1 -1
  19. package/lib/module/views/Stack/CardContainer.js +5 -6
  20. package/lib/module/views/Stack/CardContainer.js.map +1 -1
  21. package/lib/module/views/Stack/CardStack.js +29 -20
  22. package/lib/module/views/Stack/CardStack.js.map +1 -1
  23. package/lib/module/views/Stack/StackView.js +20 -26
  24. package/lib/module/views/Stack/StackView.js.map +1 -1
  25. package/lib/typescript/src/navigators/createStackNavigator.d.ts +1 -1
  26. package/lib/typescript/src/navigators/createStackNavigator.d.ts.map +1 -1
  27. package/lib/typescript/src/views/Stack/Card.d.ts +1 -0
  28. package/lib/typescript/src/views/Stack/Card.d.ts.map +1 -1
  29. package/lib/typescript/src/views/Stack/CardContainer.d.ts +2 -4
  30. package/lib/typescript/src/views/Stack/CardContainer.d.ts.map +1 -1
  31. package/lib/typescript/src/views/Stack/CardStack.d.ts +1 -3
  32. package/lib/typescript/src/views/Stack/CardStack.d.ts.map +1 -1
  33. package/lib/typescript/src/views/Stack/StackView.d.ts +5 -77
  34. package/lib/typescript/src/views/Stack/StackView.d.ts.map +1 -1
  35. package/package.json +5 -5
  36. package/src/navigators/createStackNavigator.tsx +4 -1
  37. package/src/views/Header/HeaderContainer.tsx +2 -2
  38. package/src/views/Stack/Card.tsx +16 -6
  39. package/src/views/Stack/CardContainer.tsx +6 -5
  40. package/src/views/Stack/CardStack.tsx +176 -149
  41. package/src/views/Stack/StackView.tsx +13 -12
@@ -7,6 +7,7 @@ import {
7
7
  type LocaleDirection,
8
8
  type ParamListBase,
9
9
  type Route,
10
+ type RouteProp,
10
11
  StackActions,
11
12
  type StackNavigationState,
12
13
  } from '@react-navigation/native';
@@ -15,6 +16,7 @@ import { StyleSheet, View } from 'react-native';
15
16
  import { SafeAreaInsetsContext } from 'react-native-safe-area-context';
16
17
 
17
18
  import type {
19
+ StackDescriptor,
18
20
  StackDescriptorMap,
19
21
  StackNavigationConfig,
20
22
  StackNavigationHelpers,
@@ -32,6 +34,10 @@ type Props = StackNavigationConfig & {
32
34
  state: StackNavigationState<ParamListBase>;
33
35
  navigation: StackNavigationHelpers;
34
36
  descriptors: StackDescriptorMap;
37
+ describe: (
38
+ route: RouteProp<ParamListBase>,
39
+ placeholder: boolean
40
+ ) => StackDescriptor;
35
41
  };
36
42
 
37
43
  type State = {
@@ -299,17 +305,6 @@ export class StackView extends React.Component<Props, State> {
299
305
  return routes[index - 1];
300
306
  };
301
307
 
302
- private renderScene = ({ route }: { route: Route<string> }) => {
303
- const descriptor =
304
- this.state.descriptors[route.key] || this.props.descriptors[route.key];
305
-
306
- if (!descriptor) {
307
- return null;
308
- }
309
-
310
- return descriptor.render();
311
- };
312
-
313
308
  private renderHeader = (props: HeaderContainerProps) => {
314
309
  return <HeaderContainer {...props} />;
315
310
  };
@@ -434,6 +429,12 @@ export class StackView extends React.Component<Props, State> {
434
429
  const { routes, descriptors, openingRouteKeys, closingRouteKeys } =
435
430
  this.state;
436
431
 
432
+ const preloadedDescriptors =
433
+ state.preloadedRoutes.reduce<StackDescriptorMap>((acc, route) => {
434
+ acc[route.key] = acc[route.key] || this.props.describe(route, true);
435
+ return acc;
436
+ }, {});
437
+
437
438
  return (
438
439
  <GestureHandlerWrapper style={styles.container}>
439
440
  <SafeAreaProviderCompat>
@@ -456,12 +457,12 @@ export class StackView extends React.Component<Props, State> {
456
457
  onTransitionStart={this.handleTransitionStart}
457
458
  onTransitionEnd={this.handleTransitionEnd}
458
459
  renderHeader={this.renderHeader}
459
- renderScene={this.renderScene}
460
460
  state={state}
461
461
  descriptors={descriptors}
462
462
  onGestureStart={this.handleGestureStart}
463
463
  onGestureEnd={this.handleGestureEnd}
464
464
  onGestureCancel={this.handleGestureCancel}
465
+ preloadedDescriptors={preloadedDescriptors}
465
466
  {...rest}
466
467
  />
467
468
  )}