react-native Unable to retrieve params via deep link

Viewed 138

unable to pass params from deep link. getting undefined when running:

npx uri-scheme open [prefix]://news/3 --android

  1. NewsScreen.js

    import React from 'react';
    
    const NewsScreen = ({ route, navigation }) => {
       console.log(route.params); // undefined
    };
    
  2. Linking.js

    import LINKING_PREFIXES from 'src/shared/constants';
    
    export const linking = {
       prefixes: LINKING_PREFIXES,
       config: {
          screens: {
             Home: {
                screens: {
                   News: {
                      path: 'news/:id?',
                      parse: {
                         id: id => `${id}`,
                      },
                   },
                },
             },
             NotFound: '*',
          },
       },
    };
    
  3. Router.js

    import React from 'react';
    import { NavigationContainer } from '@react-navigation/native';
    import {useAuth} from 'src/contexts/AuthContext';
    import {Loading} from 'src/components/Loading';
    import {AppStack} from './AppStack';
    import {AuthStack} from './AuthStack';
    import {GuestStack} from './GuestStack';
    import SplashScreen from 'src/screens/guest/SplashScreen';
    import linking from './Linking.js';
    
    export const Router = () => {
       const {authData, loading, isFirstTime, appBooting} = useAuth();
    
       if (loading) {
          return <Loading />;
       }
    
       const loadRoutes = () => {
          if (appBooting) {
             return <SplashScreen />;
          }
    
          if (isFirstTime) {
             return <GuestStack />;
          }
    
          if (!authData || !authData.name || !authData.confirmed) {
             return <AuthStack />;
          }
    
          return <AppStack />;
       };
    
       return <NavigationContainer>{loadRoutes()}</NavigationContainer>;
    };
    
  4. AppStack.js

    import React from 'react';
    import {createDrawerNavigator} from '@react-navigation/drawer';
    import {SpeedNewsStack} from 'src/routes/NewsStack';
    
    const Drawer = createDrawerNavigator();
    
    export const AppStack = () => {
       return (
          <Drawer.Navigator>
             <Drawer.Screen name="Home" component={NewsStack} />
          </Drawer.Navigator>
       );
    };
    
  5. NewsStack.js

    import React from 'react';
    import {createStackNavigator} from '@react-navigation/stack';
    import SpeedNewsScreen from 'src/screens/NewsScreen';
    
    const Stack = createStackNavigator();
    
    export const NewsStack = () => {
       return (
          <Stack.Navigator>
             <Stack.Screen name="News" component={NewsScreen} />
          </Stack.Navigator>
       );
    };
    
0 Answers
Related