防止堆栈导航器在打开具有深度 link 的反应本机应用程序时自动路由到屏幕

Prevent stack navigator from automatically routing to screen when opening react native app with a deep link

我有一个反应本机 iOS 应用程序,通过我们自己的服务生成的简短 url 来打开。 URL 看起来像我的网站。com/slr/xxxxxxxxx。 URL 通过以下代码处理。

Linking.canOpenURL(url).then(supported => {
  if (supported) {
    // my logic
  }
});

现在的问题是,应用程序的堆栈导航器尝试读取 url 并将其重定向到名为 xxxxxxx 的屏幕,该屏幕不存在,因此会产生以下错误.

The action 'NAVIGATE' with payload {"name":"slr","params":{"initial":true,"screen":"xxxxxxxxxxxx"}} was not handled by any navigator.

如何在不更改 URL 或添加带有路由 xxxxxxx 的屏幕的情况下阻止此自动重定向?

我试过用下面的方法添加路由,但是stack navigator在回调后仍然重定向,所以这也不起作用。

    DeepLinking.addRoute('/testurl.com/#/sign-in', response => navigate(‘signIn’))

您是否像这样在导航容器中定义了深层衬里?

const linking: LinkingOptions = {
  config: {
    screens: {
      TabNavigator: {
        screens: {
          initialRouteName: 'YourInitRouteTab',
          YourInitRouteTab: {
            screens: {
              YourScreen: {
                path: 'screen/path/parameter?',
              },
            },
          },
        },
      },
    },
  },
};

<NavigationContainer
  linking={linking}
  ...