与受保护屏幕的 React Navigation 进行深度链接

问题描述 投票:0回答:1

我正在利用 React Navigation、EAS Build 等利用 Expo Managed Workflow 构建一个应用程序。

React Navigation 有一个

linking
配置,可用于将屏幕连接到深层链接路径。我面临的问题是,当用户已经打开应用程序时,深层链接正在工作,但当深层链接从关闭状态打开应用程序时,深层链接则不起作用。

我最好的猜测是,这是因为深层链接正在尝试在我的身份验证逻辑公开“受保护的屏幕”之前进行导航。例如

!isAuth ? <LogIn /> : <ProtectedScreens />

我似乎找不到任何好的文档或示例来说明处理此问题并检测深层链接的最佳方法,但要等到 React Navigation 呈现

<ProtectedScreens />

如有任何帮助,我们将不胜感激。

react-native expo react-navigation deep-linking
1个回答
0
投票

最近我自己试图解决这个问题,而react-navigation的文档在这方面确实很差。

问题是,无论用户是否经过身份验证,您都可能会渲染单个

<NavigationContainer>
,并根据身份验证状态更改导航容器的上下文。解决这个问题的一种方法是拥有两个
<NavigationContainer>
。即:

...
const isAuth = useAuth()
    
return {
        isAuth ? 
        <NavigationContainer>
          <AuthScreen />
        <NavigationContainer> 
        :
        <NavigationContainer linking={yourLinkingConfig}>
           <ProtectedScreens/>
        <NavigationContainer>
}
...

我可以确认以上工作。

© www.soinside.com 2019 - 2024. All rights reserved.