Skip to content

Commit e8adc14

Browse files
committed
Use createXScreen for examples for migration from expo router
1 parent bd367bf commit e8adc14

1 file changed

Lines changed: 57 additions & 33 deletions

File tree

versioned_docs/version-8.x/from-expo-router.md

Lines changed: 57 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,23 @@ React Navigation starts with the navigation tree:
7979

8080
2. Create a root navigator.
8181

82-
Define your root navigator with a `createXNavigator` function and render it with [`createStaticNavigation`](static-configuration.md#createstaticnavigation):
82+
Define your root navigator with a `createXNavigator` function, create screen configs with the matching [`createXScreen`](static-configuration.md#createxscreen) helper, and render it with [`createStaticNavigation`](static-configuration.md#createstaticnavigation):
8383

8484
```tsx
8585
import { createStaticNavigation } from '@react-navigation/native';
86-
import { createNativeStackNavigator } from '@react-navigation/native-stack';
86+
import {
87+
createNativeStackNavigator,
88+
createNativeStackScreen,
89+
} from '@react-navigation/native-stack';
8790

8891
const RootStack = createNativeStackNavigator({
8992
screens: {
90-
Home: HomeScreen,
91-
Profile: ProfileScreen,
93+
Home: createNativeStackScreen({
94+
screen: HomeScreen,
95+
}),
96+
Profile: createNativeStackScreen({
97+
screen: ProfileScreen,
98+
}),
9299
},
93100
});
94101

@@ -112,7 +119,9 @@ React Navigation starts with the navigation tree:
112119
```ts
113120
const RootStack = createNativeStackNavigator({
114121
screens: {
115-
Profile: ProfileScreen,
122+
Profile: createNativeStackScreen({
123+
screen: ProfileScreen,
124+
}),
116125
},
117126
});
118127
```
@@ -134,14 +143,20 @@ React Navigation starts with the navigation tree:
134143
```ts
135144
const HomeTabs = createBottomTabNavigator({
136145
screens: {
137-
Home: HomeScreen,
138-
Feed: FeedScreen,
146+
Home: createBottomTabScreen({
147+
screen: HomeScreen,
148+
}),
149+
Feed: createBottomTabScreen({
150+
screen: FeedScreen,
151+
}),
139152
},
140153
});
141154

142155
const RootStack = createNativeStackNavigator({
143156
screens: {
144-
Main: HomeTabs,
157+
Main: createNativeStackScreen({
158+
screen: HomeTabs,
159+
}),
145160
},
146161
});
147162
```
@@ -155,10 +170,10 @@ React Navigation starts with the navigation tree:
155170
```ts
156171
const RootStack = createNativeStackNavigator({
157172
screens: {
158-
Profile: {
173+
Profile: createNativeStackScreen({
159174
screen: ProfileScreen,
160175
linking: 'profile/:userId',
161-
},
176+
}),
162177
},
163178
});
164179
```
@@ -172,14 +187,14 @@ React Navigation starts with the navigation tree:
172187
```ts
173188
const RootStack = createNativeStackNavigator({
174189
screens: {
175-
Home: {
190+
Home: createNativeStackScreen({
176191
if: useIsSignedIn,
177192
screen: HomeScreen,
178-
},
179-
SignIn: {
193+
}),
194+
SignIn: createNativeStackScreen({
180195
if: useIsSignedOut,
181196
screen: SignInScreen,
182-
},
197+
}),
183198
},
184199
});
185200
```
@@ -191,10 +206,10 @@ React Navigation starts with the navigation tree:
191206
```ts
192207
const RootStack = createNativeStackNavigator({
193208
screens: {
194-
NotFound: {
209+
NotFound: createNativeStackScreen({
195210
screen: NotFoundScreen,
196211
linking: '*',
197-
},
212+
}),
198213
},
199214
});
200215
```
@@ -353,7 +368,10 @@ export default function FeedLayout() {
353368
Model the same screens and options with explicit nested navigators:
354369

355370
```tsx title="src/RootStack.tsx"
356-
import { createNativeStackNavigator } from '@react-navigation/native-stack';
371+
import {
372+
createNativeStackNavigator,
373+
createNativeStackScreen,
374+
} from '@react-navigation/native-stack';
357375

358376
import { HomeTabs } from './HomeTabs';
359377
import { NotFoundScreen } from './NotFoundScreen';
@@ -364,29 +382,32 @@ export const RootStack = createNativeStackNavigator({
364382
headerBackButtonDisplayMode: 'minimal',
365383
},
366384
screens: {
367-
Main: {
385+
Main: createNativeStackScreen({
368386
screen: HomeTabs,
369387
options: {
370388
headerShown: false,
371389
},
372-
},
373-
Profile: {
390+
}),
391+
Profile: createNativeStackScreen({
374392
screen: ProfileScreen,
375393
linking: 'profile/:userId',
376394
options: {
377395
presentation: 'modal',
378396
},
379-
},
380-
NotFound: {
397+
}),
398+
NotFound: createNativeStackScreen({
381399
screen: NotFoundScreen,
382400
linking: '*',
383-
},
401+
}),
384402
},
385403
});
386404
```
387405

388406
```tsx title="src/HomeTabs.tsx"
389-
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
407+
import {
408+
createBottomTabNavigator,
409+
createBottomTabScreen,
410+
} from '@react-navigation/bottom-tabs';
390411
import { Platform } from 'react-native';
391412

392413
import { FeedStack } from './FeedStack';
@@ -398,7 +419,7 @@ export const HomeTabs = createBottomTabNavigator({
398419
tabBarMinimizeBehavior: 'onScrollDown',
399420
},
400421
screens: {
401-
Home: {
422+
Home: createBottomTabScreen({
402423
screen: HomeScreen,
403424
options: {
404425
tabBarLabel: 'Home',
@@ -413,8 +434,8 @@ export const HomeTabs = createBottomTabNavigator({
413434
},
414435
}),
415436
},
416-
},
417-
Feed: {
437+
}),
438+
Feed: createBottomTabScreen({
418439
screen: FeedStack,
419440
linking: 'feed',
420441
options: {
@@ -430,13 +451,16 @@ export const HomeTabs = createBottomTabNavigator({
430451
},
431452
}),
432453
},
433-
},
454+
}),
434455
},
435456
});
436457
```
437458

438459
```tsx title="src/FeedStack.tsx"
439-
import { createNativeStackNavigator } from '@react-navigation/native-stack';
460+
import {
461+
createNativeStackNavigator,
462+
createNativeStackScreen,
463+
} from '@react-navigation/native-stack';
440464

441465
import { FeedListScreen } from './FeedListScreen';
442466
import { PostScreen } from './PostScreen';
@@ -446,22 +470,22 @@ export const FeedStack = createNativeStackNavigator({
446470
headerLargeTitleEnabled: true,
447471
},
448472
screens: {
449-
FeedList: {
473+
FeedList: createNativeStackScreen({
450474
screen: FeedListScreen,
451475
linking: '',
452476
options: {
453477
headerSearchBarOptions: {
454478
placeholder: 'Search posts',
455479
},
456480
},
457-
},
458-
Post: {
481+
}),
482+
Post: createNativeStackScreen({
459483
screen: PostScreen,
460484
linking: ':postId',
461485
options: {
462486
headerLargeTitleEnabled: false,
463487
},
464-
},
488+
}),
465489
},
466490
});
467491
```

0 commit comments

Comments
 (0)