Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native React Navigation v.5为深度链接配置正确的状态对象_React Native_Navigation Drawer_React Navigation_Deep Linking_Stack Navigator - Fatal编程技术网

React native React Navigation v.5为深度链接配置正确的状态对象

React native React Navigation v.5为深度链接配置正确的状态对象,react-native,navigation-drawer,react-navigation,deep-linking,stack-navigator,React Native,Navigation Drawer,React Navigation,Deep Linking,Stack Navigator,我在应用程序中处理深度链接时遇到问题。我认为我传递给的配置变量不正确。我的导航结构如下: App.js(简化版) const App = () => { const {state} = useContext(UserContext); const [isReady, setIsReady] = React.useState(false); const [initialState, setInitialState] = React.useState(); c

我在应用程序中处理深度链接时遇到问题。我认为我传递给的配置变量不正确。我的导航结构如下:

App.js(简化版)

const App = () => {

    const {state} = useContext(UserContext);
    const [isReady, setIsReady] = React.useState(false);
    const [initialState, setInitialState] = React.useState();
    const ref = React.useRef();

    const config = {
        Home: {
          path: 'home',
          screens:{
            HomeDetails: {
              path: 'details/:id',
              parse: {
                id: Number
              }
            },
            ContentPlay: {
              path: 'content/:cid',
              parse: {
                cid: Number
              }
            }
          }
        }
    };


    const { getInitialState } = useLinking(ref, {
        prefixes: ['http://example.com', 'https://example.com'],
        config
    });



    useEffect(() => {
        getInitialState()
        .catch(() => {})
        .then(state => {
            if (state !== undefined) {
                setInitialState(state);
            }
            setIsReady(true);
        });
    }, [getInitialState]);


    if (!isReady){
        return <LoadingScreen />;
    }
    return (
       <NavigationContainer ref={ref} initialState={initialState} >
           {state.user.token === '' ? <LoginStack/> : <MainStack/>}
       </NavigationContainer>
   );
};
const Stack = createStackNavigator();
const Drawer = createDrawerNavigator();

function DrawerNav() {

    return (
        <Drawer.Navigator 
          initialRouteName='Home'
          drawerContent={props => CustomDrawerContent()}>
        <Drawer.Screen 
          name="Home" 
          component={HomeScreen}/>
        <Drawer.Screen 
          name="Content" 
          component={ContentScreen}/>
        </Drawer.Navigator>
    );
}

const MainStack = () => {
    return (
        <Stack.Navigator
          initialRouteName="DrawerNav">
        <Stack.Screen
          name="DrawerNav"
          component={DrawerNav}/>
        <Stack.Screen
          name="HomeDetails"
          component={HomeDetailsScreen}/>
        <Stack.Screen
          name="ContentPlay"
          component={ContentPlayScreen}/>
        </Stack.Navigator>
    );
}


export default MainStack;
const config = {
  HomeDetails: {
    path: "details/:id",
    parse: {
      id: Number
    }
  },
  ContentPlay: {
    path: 'content/:cid',
    parse: {
      cid: Number
    }
  }
};