Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"id" prop is not passed to the Navigator in react-navigation v6 #248

Open
ChrisYohann opened this issue Jul 17, 2022 · 0 comments
Open

"id" prop is not passed to the Navigator in react-navigation v6 #248

ChrisYohann opened this issue Jul 17, 2022 · 0 comments

Comments

@ChrisYohann
Copy link

Hi everyone,

I have an issue with react-navigation v6.

Usually I take advantage of the id prop of the navigator to retrieve a not direct parent navigator using the useNavigation hook like this :

type ExploreScreenProps = StackScreenProps<
  ExploreStackParamList,
  'ExploreScreen',
  NavigatorName
>;
type AppNavigationProp = StackNavigationProp<RootStackParamList>;

const ExploreScreen = ({ navigation }: ExploreScreenProps) => {
  const parentNavigation = navigation.getParent<AppNavigationProp>(
    NavigatorName.APP_NAVIGATOR,
  );

  // This should return the navigation object but it returns undefined
  console.log('Parent Navigation :', parentNavigation);

 }

But When I use createSharedElementStackNavigator, The id prop is not accepted. and I have this error :

My code :

const AppNavigatorShared =
  createSharedElementStackNavigator<ContentStackParamList>();


const AppScreen = () => (
  <AppNavigatorShared.Navigator
    id={NavigatorName.APP_NAVIGATOR} // 
    initialRouteName={ScreenName.HOME_SCREEN}

The error :

Type '{ children: Element[]; id: NavigatorName; initialRouteName: ScreenName.HOME_SCREEN; screenOptions: { headerTitleAlign: "center"; headerShadowVisible: false; headerStyle: { ...; }; headerTintColor: string; }; }' is not assignable to type 'IntrinsicAttributes & ((Omit<((Omit<DefaultRouterOptions<string> & { children: ReactNode; screenListeners?: Partial<{ ...; }> | ((props: { ...; }) => Partial<...>) | undefined; screenOptions?: StackNavigationOptions | ... 1 more ... | undefined; defaultScreenOptions?: StackNavigationOptions | ... 1 more ... | undefi...'.
  Property 'id' does not exist on type 'IntrinsicAttributes & ((Omit<((Omit<DefaultRouterOptions<string> & { children: ReactNode; screenListeners?: Partial<{ ...; }> | ((props: { ...; }) => Partial<...>) | undefined; screenOptions?: StackNavigationOptions | ... 1 more ... | undefined; defaultScreenOptions?: StackNavigationOptions | ... 1 more ... | undefi...'.

I tried to pass a name prop in the createSharedElementStackNavigator like this, according to that line

const navigatorId =
options && options.name ? options.name : `stack${_navigatorId}`;
_navigatorId++;

const AppNavigatorShared =
  createSharedElementStackNavigator<ContentStackParamList>({
    name: NavigatorName.APP_NAVIGATOR,
    debug: true,
  });

but it did not change anything.

Someone has an idea ? Thanks !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant