fix: add a deprecation warning for mode prop in stack

This commit is contained in:
Satyajit Sahoo
2021-05-09 23:42:12 +02:00
parent 4af9d10298
commit a6e498170f
6 changed files with 18 additions and 9 deletions

View File

@@ -30,16 +30,24 @@ function StackNavigator({
screenOptions,
...rest
}: Props) {
// @ts-expect-error: mode is deprecated
const mode = rest.mode as 'card' | 'modal' | undefined;
// @ts-expect-error: headerMode='none' is deprecated
const headerMode = rest.headerMode as StackHeaderMode | 'none' | undefined;
warnOnce(
mode != null,
`Stack Navigator: 'mode="${mode}"' is deprecated. Use 'animationPresentation: "${mode}"' in 'screenOptions' instead.`
);
warnOnce(
headerMode === 'none',
`Stack Navigator: 'headerMode="none"' is deprecated. Use 'headerShown: false' in 'screenOptions' instead.`
);
warnOnce(
headerMode && headerMode !== 'none',
headerMode != null && headerMode !== 'none',
`Stack Navigator: 'headerMode' is moved to 'options'. Moved it to 'screenOptions' to keep current behavior.`
);
@@ -54,6 +62,7 @@ function StackNavigator({
children,
screenOptions,
defaultScreenOptions: () => ({
animationPresentation: mode,
headerShown: headerMode ? headerMode !== 'none' : true,
headerMode: headerMode && headerMode !== 'none' ? headerMode : undefined,
}),