diff --git a/packages/bottom-tabs/src/navigators/createBottomTabNavigator.tsx b/packages/bottom-tabs/src/navigators/createBottomTabNavigator.tsx index 85d3379b..aef60b37 100644 --- a/packages/bottom-tabs/src/navigators/createBottomTabNavigator.tsx +++ b/packages/bottom-tabs/src/navigators/createBottomTabNavigator.tsx @@ -63,6 +63,15 @@ function BottomTabNavigator({ ], }); + ( + Object.keys(defaultScreenOptions) as (keyof BottomTabNavigationOptions)[] + ).forEach((key) => { + if (defaultScreenOptions[key] === undefined) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete defaultScreenOptions[key]; + } + }); + warnOnce( tabBarOptions, `Bottom Tab Navigator: 'tabBarOptions' is deprecated. Migrate the options to 'screenOptions' instead.\n\nPlace the following in 'screenOptions' in your code to keep current behavior:\n\n${JSON.stringify( @@ -78,7 +87,7 @@ function BottomTabNavigator({ warnOnce( true, - `Bottom Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.` + `Bottom Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\n\nSee https://reactnavigation.org/docs/6.x/bottom-tab-navigator/#lazy for more details.` ); } diff --git a/packages/core/src/useNavigationHelpers.tsx b/packages/core/src/useNavigationHelpers.tsx index 077c0499..0fac3a8b 100644 --- a/packages/core/src/useNavigationHelpers.tsx +++ b/packages/core/src/useNavigationHelpers.tsx @@ -83,7 +83,7 @@ export default function useNavigationHelpers< ); }, getParent: () => parentNavigationHelpers as any, - getState: getState, + getState, } as NavigationHelpers & (NavigationProp | undefined) & ActionHelpers; diff --git a/packages/drawer/src/navigators/createDrawerNavigator.tsx b/packages/drawer/src/navigators/createDrawerNavigator.tsx index 53794057..a64bd9b6 100644 --- a/packages/drawer/src/navigators/createDrawerNavigator.tsx +++ b/packages/drawer/src/navigators/createDrawerNavigator.tsx @@ -55,6 +55,15 @@ function DrawerNavigator({ gestureHandlerProps: drawerContentOptions.gestureHandlerProps, }); + ( + Object.keys(defaultScreenOptions) as (keyof DrawerNavigationOptions)[] + ).forEach((key) => { + if (defaultScreenOptions[key] === undefined) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete defaultScreenOptions[key]; + } + }); + warnOnce( drawerContentOptions, `Drawer Navigator: 'drawerContentOptions' is deprecated. Migrate the options to 'screenOptions' instead.\n\nPlace the following in 'screenOptions' in your code to keep current behavior:\n\n${JSON.stringify( @@ -70,7 +79,7 @@ function DrawerNavigator({ warnOnce( true, - `Drawer Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.` + `Drawer Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\n\nSee https://reactnavigation.org/docs/6.x/drawer-navigator/#lazy for more details.` ); } diff --git a/packages/material-top-tabs/src/navigators/createMaterialTopTabNavigator.tsx b/packages/material-top-tabs/src/navigators/createMaterialTopTabNavigator.tsx index f4cff7b2..cd5c7410 100644 --- a/packages/material-top-tabs/src/navigators/createMaterialTopTabNavigator.tsx +++ b/packages/material-top-tabs/src/navigators/createMaterialTopTabNavigator.tsx @@ -59,6 +59,17 @@ function MaterialTopTabNavigator({ tabBarStyle: tabBarOptions.style, }); + ( + Object.keys( + defaultScreenOptions + ) as (keyof MaterialTopTabNavigationOptions)[] + ).forEach((key) => { + if (defaultScreenOptions[key] === undefined) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete defaultScreenOptions[key]; + } + }); + warnOnce( tabBarOptions, `Material Top Tab Navigator: 'tabBarOptions' is deprecated. Migrate the options to 'screenOptions' instead.\n\nPlace the following in 'screenOptions' in your code to keep current behavior:\n\n${JSON.stringify( @@ -74,7 +85,7 @@ function MaterialTopTabNavigator({ warnOnce( true, - `Material Top Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.` + `Material Top Tab Navigator: 'lazy' in props is deprecated. Move it to 'screenOptions' instead.\n\nSee https://reactnavigation.org/docs/6.x/material-top-tab-navigator#lazy for more details.` ); } diff --git a/packages/stack/src/navigators/createStackNavigator.tsx b/packages/stack/src/navigators/createStackNavigator.tsx index 06802c2d..a15a0566 100644 --- a/packages/stack/src/navigators/createStackNavigator.tsx +++ b/packages/stack/src/navigators/createStackNavigator.tsx @@ -45,17 +45,17 @@ function StackNavigator({ warnOnce( mode != null, - `Stack Navigator: 'mode="${mode}"' is deprecated. Use 'presentation: "${mode}"' in 'screenOptions' instead.` + `Stack Navigator: 'mode="${mode}"' is deprecated. Use 'presentation: "${mode}"' in 'screenOptions' instead.\n\nSee https://reactnavigation.org/docs/6.x/stack-navigator#presentation for more details.` ); warnOnce( headerMode === 'none', - `Stack Navigator: 'headerMode="none"' is deprecated. Use 'headerShown: false' in 'screenOptions' instead.` + `Stack Navigator: 'headerMode="none"' is deprecated. Use 'headerShown: false' in 'screenOptions' instead.\n\nSee https://reactnavigation.org/docs/6.x/stack-navigator/#headershown for more details.` ); warnOnce( headerMode != null && headerMode !== 'none', - `Stack Navigator: 'headerMode' is moved to 'options'. Moved it to 'screenOptions' to keep current behavior.` + `Stack Navigator: 'headerMode' is moved to 'options'. Moved it to 'screenOptions' to keep current behavior.\n\nSee https://reactnavigation.org/docs/6.x/stack-navigator/#headermode for more details.` ); const { state, descriptors, navigation, NavigationContent } =