【问题标题】:Pushing routes to Navigator in react-native在 react-native 中将路由推送到 Navigator
【发布时间】:2016-03-17 22:24:48
【问题描述】:

我很难理解 Navigator 组件。 我有一组预设路线

routes: [{
    name: 'settings'
}, {
    name: 'feed'
}, {
    name: 'matches'
}]

所以应用程序从 Feed 页面开始,然后您可以使用 NavigationBar 在 3 条路线之间来回切换 [为方便起见,从代码中省略]

<Navigator initialRoute={config.routes[1]}
           initialRouteStack={config.routes}
           renderScene={this.renderScene}} />

现在,我想介绍一条新的临时路线 [有点像 instagram/spotify] 因此,在 Feed 路由上,当您单击“显示配置文件”时,它会将新路由推送到堆栈。

this.props.nav.push({
  name: 'profile',
  sceneConfig: Navigator.SceneConfigs.FloatFromBottom
})

现在,令人讨厌的是,它完全取代了 Matches 路线,因为当我弹出这条路线以返回 Feed 时。比赛路线已完全删除。 我查看了 API 并尝试使用 replace 方法等,但不断得到时髦的结果。

请参阅下面的 GIF 以获得更好的理解。

这是使用导航器的正确方法,有一组预设的路线吗?我在 NavigationBar 中使用 jumpBack/jumpForward 在它们之间移动,但是我无法为预设路线提供特定的场景配置。我该怎么做呢?例如,如果我想设置路由到 FloatFromBottom?

【问题讨论】:

标签: routes react-native navigator


【解决方案1】:

我认为问题在于您首先使用的是路由堆栈。在我的应用程序中,我将所有场景转换编码到逻辑中,并不断将场景推送和弹出到堆栈中。

我认为使用 initialRouteStack 可能不足以满足您的用例。阅读http://devdocs.io/react_native/navigator

push(route) - 向前导航到一个新场景,挤压任何你可以跳转到的场景

所以你看到当你使用push 时你破坏了第三个场景。尝试在不预先确定场景的情况下重组您的应用以推送和弹出。

您也可以尝试将配置文件路线添加为第 4 个场景并在它们之间进行过渡。

【讨论】:

  • 感谢您的回复,如果您以我的用例为例,如果您弹出 MATCHES 并推送 PROFILE,您会注意到很多不一致之处,不仅在过渡中,而且在导航栏中也有弹出场景卸载它们,在以前的场景中不保持用户行为似乎真的很糟糕。在状态下管理它们也是太多的开销。考虑 Instagram 和 Spotify,在一个场景中滚动并转换到下一个场景并返回到它,您的滚动位置和任何交互都将被保留。除非你离开主要路线。
  • 那么您的应用程序路由就不是线性堆栈了。这是一个图表。将其添加为第四条路线并在它们之间进行转换是否有效?即使您没有混合应用程序,您的个人资料路线也非常适合modal。模态不会影响您的路由堆栈。
  • 谢谢哈利,它不是线性路线,导航器中的转换不起作用。我现在通过制作自己的 navigatorBar 组件解决了这个问题。如果有人有兴趣github.com/antigirl/ReactNativeGraphRoutes
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多