Skip to content

Commit eeb0d4e

Browse files
committed
Tweak custom tab bar example
1 parent a7ef158 commit eeb0d4e

File tree

4 files changed

+20
-18
lines changed

4 files changed

+20
-18
lines changed

versioned_docs/version-6.x/bottom-tab-navigator.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,7 @@ function MyTabBar({ state, descriptors, navigation }) {
112112
});
113113

114114
if (!isFocused && !event.defaultPrevented) {
115-
// The `merge: true` option makes sure that the params inside the tab screen are preserved
116-
navigation.navigate({ name: route.name, merge: true });
115+
navigation.navigate(route.name, route.params);
117116
}
118117
};
119118

versioned_docs/version-6.x/custom-navigators.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,26 +74,27 @@ function TabNavigator({
7474
return (
7575
<NavigationContent>
7676
<View style={[{ flexDirection: 'row' }, tabBarStyle]}>
77-
{state.routes.map((route) => (
77+
{state.routes.map((route, index) => (
7878
<Pressable
7979
key={route.key}
8080
onPress={() => {
81+
const isFocused = state.index === index;
8182
const event = navigation.emit({
8283
type: 'tabPress',
8384
target: route.key,
8485
canPreventDefault: true,
8586
});
8687

87-
if (!event.defaultPrevented) {
88+
if (!isFocused && !event.defaultPrevented) {
8889
navigation.dispatch({
89-
...TabActions.jumpTo(route.name),
90+
...TabActions.jumpTo(route.name, route.params),
9091
target: state.key,
9192
});
9293
}
9394
}}
9495
style={{ flex: 1 }}
9596
>
96-
<Text>{descriptors[route.key].options.title || route.name}</Text>
97+
<Text>{descriptors[route.key].options.title ?? route.name}</Text>
9798
</Pressable>
9899
))}
99100
</View>
@@ -252,20 +253,21 @@ function TabNavigator({
252253
return (
253254
<NavigationContent>
254255
<View style={[{ flexDirection: 'row' }, tabBarStyle]}>
255-
{state.routes.map((route) => (
256+
{state.routes.map((route, index) => (
256257
<Pressable
257258
key={route.key}
258259
onPress={() => {
260+
const isFocused = state.index === index;
259261
const event = navigation.emit({
260262
type: 'tabPress',
261263
target: route.key,
262264
canPreventDefault: true,
263265
data: {
264-
isAlreadyFocused: route.key === state.routes[state.index].key,
266+
isAlreadyFocused: isFocused,
265267
},
266268
});
267269

268-
if (!event.defaultPrevented) {
270+
if (!isFocused && !event.defaultPrevented) {
269271
navigation.dispatch({
270272
...CommonActions.navigate(route),
271273
target: state.key,
@@ -274,7 +276,7 @@ function TabNavigator({
274276
}}
275277
style={{ flex: 1 }}
276278
>
277-
<Text>{descriptors[route.key].options.title || route.name}</Text>
279+
<Text>{descriptors[route.key].options.title ?? route.name}</Text>
278280
</Pressable>
279281
))}
280282
</View>

versioned_docs/version-6.x/material-top-tab-navigator.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,7 @@ function MyTabBar({ state, descriptors, navigation, position }) {
156156
});
157157

158158
if (!isFocused && !event.defaultPrevented) {
159-
// The `merge: true` option makes sure that the params inside the tab screen are preserved
160-
navigation.navigate({ name: route.name, merge: true });
159+
navigation.navigate(route.name, route.params);
161160
}
162161
};
163162

versioned_docs/version-7.x/custom-navigators.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,22 +77,23 @@ function TabNavigator({
7777
<Pressable
7878
key={route.key}
7979
onPress={() => {
80+
const isFocused = state.index === index;
8081
const event = navigation.emit({
8182
type: 'tabPress',
8283
target: route.key,
8384
canPreventDefault: true,
8485
});
8586

86-
if (!event.defaultPrevented) {
87+
if (!isFocused && !event.defaultPrevented) {
8788
navigation.dispatch({
88-
...TabActions.jumpTo(route.name),
89+
...TabActions.jumpTo(route.name, route.params),
8990
target: state.key,
9091
});
9192
}
9293
}}
9394
style={{ flex: 1 }}
9495
>
95-
<Text>{descriptors[route.key].options.title || route.name}</Text>
96+
<Text>{descriptors[route.key].options.title ?? route.name}</Text>
9697
</Pressable>
9798
))}
9899
</View>
@@ -251,20 +252,21 @@ function TabNavigator({
251252
return (
252253
<NavigationContent>
253254
<View style={[{ flexDirection: 'row' }, tabBarStyle]}>
254-
{state.routes.map((route) => (
255+
{state.routes.map((route, index) => (
255256
<Pressable
256257
key={route.key}
257258
onPress={() => {
259+
const isFocused = state.index === index;
258260
const event = navigation.emit({
259261
type: 'tabPress',
260262
target: route.key,
261263
canPreventDefault: true,
262264
data: {
263-
isAlreadyFocused: route.key === state.routes[state.index].key,
265+
isAlreadyFocused: isFocused,
264266
},
265267
});
266268

267-
if (!event.defaultPrevented) {
269+
if (!isFocused && !event.defaultPrevented) {
268270
navigation.dispatch({
269271
...CommonActions.navigate(route),
270272
target: state.key,

0 commit comments

Comments
 (0)