如何通过反应导航检测路线变化或使路线与屏幕匹配

时间:2018-08-02 20:59:14

标签: ios react-native react-navigation

我正在我的应用程序中使用react-navigation@1.5.0并通过SSO实现。 工作流程是这样的:

  • 该应用会打开一个显示登录按钮的窗口
  • 一旦用户单击“登录”按钮,应用程序就会在iOS移动浏览器上打开一个指向联合登录服务器的网址。
  • 成功通过身份验证后,用户将被重定向到myapp://authentication/<auth_code>,这将正确地重新打开我的应用。

很遗憾,我无法检测到任何路径/路线更改。

我的路线设置如下:

export const RootNavigator = StackNavigator(
  {
    Login: {
      screen: Login,
      path: '/login',
      navigationOptions: {
        title: 'Log In'
      }
    },
    SsoHandler: {
      screen: SsoHandler,
      path: '/authentication/:authCode'
    },

    SignedIn: {
      screen: MainApp,
      path: '/'
    }
  }
);

我遇到的问题是我正在从联合身份验证服务重定向回我的iOS应用 仍然会打开Login屏幕,并且我没有检测到任何路线更改或道具更改,因此我最终可以导航到SsoHandler

由于某种原因,我本来希望StackNavigator检测到该路线并打开SsoHandler上的Login而不是/authentication/<auth_code>

什么是正确的方法?

谢谢你, 安德里亚斯

1 个答案:

答案 0 :(得分:1)

深入研究之后,我发现我必须使用Linking.addEventListener来通过深度链接来监听URL的更改。

React Native Linking显示了实现此目标的必要步骤。