【问题标题】:Passing URI prefix to createSwitchNavigator function for Deep Linking with react-navigation将 URI 前缀传递给 createSwitchNavigator 函数以使用 react-navigation 进行深度链接
【发布时间】:2019-02-13 17:42:51
【问题描述】:

我有一个相当直接的 react-navigation 设置,它使用一个 switch navigator,它接受一个参数 signedIn 来设置如下所示的初始路由:

const uriPrefix =
  Platform.OS === 'android'
    ? 'myApp://myApp/'
    : 'myApp://'

const createRootNavigator = (signedIn = false) => (
  createSwitchNavigator({
    LoginNav,
    AllNav: { screen: AllNav, uriPrefix, path: '' }
  }, {
    initialRouteName: signedIn ? 'AllNav' : 'LoginNav',
  })
);

然后我在 RootContainer 中调用它:

 const Nav = Navigation(isLoggedIn);
 return (
    <Nav />
  )

在 iOS 上,这适用于 uriPrefix,我可以使用带有链接的 Linking.openURL() 链接到屏幕。

在 Android 上它不起作用。我可以在不使用 switchNavigator 并仅导出 LoginNav 和 AllNav 的情况下使其在 Android 上运行,但我仍然需要 switchNavigator。

我按照此处的说明进行操作:https://reactnavigation.org/docs/en/deep-linking.html,但无法以他们定义的方式传递 uriPrefix。我发现至少对于 iOS,我能够在我的 switchNavigator 中定义它,但它在 Android 上对我来说并不一样。

【问题讨论】:

    标签: android react-native react-navigation


    【解决方案1】:

    看起来这是 react-navigation 中的一个错误: https://github.com/react-navigation/react-navigation/issues/5027 https://github.com/react-navigation/react-navigation/issues/4913

    那里有一些解决方法可能会有所帮助,我最终将所有导航更改为堆栈导航以支持深度链接 =(

    【讨论】:

      猜你喜欢
      • 2019-08-27
      • 1970-01-01
      • 2023-01-04
      • 2019-11-07
      • 2017-09-18
      • 1970-01-01
      • 2023-02-25
      • 2019-02-16
      • 1970-01-01
      相关资源
      最近更新 更多