温泉反应导航器pushpage覆盖最后一页

时间:2016-09-17 13:12:08

标签: reactjs onsen-ui onsen-ui2

在一个项目中,我的目的是只使用一个Navigator元素来处理所有页面导航。

代码中只有一个单appStatenavigator是其成员,它由最外面的App组件初始化。

ReactDOM.render(
   <App/>,
   document.getElementById('app')
 );  

导航器由以下人员发起:

initialRoute = {
  component: LoginPage,
  props: {
}};

<Ons.Navigator
  initialRoute={this.initialRoute}
  renderPage={this.renderPage.bind(this)}
/>

renderPage(route: Route, navigator: typeof Ons.Navigator) {
  const props: any = route.props || {};
  if (appState.navigator == null) {
    appState.navigator = navigator;
  }
  props.navigator = appState.navigator;
  return React.createElement(route.component, route.props);
}

正确使用initialRoute。当我拨打pushPage(newRoute)时,显然会在添加时检查newRoute。也就是说,在推送newRoute之后我得到了以下内容:

LoginPage
HomePage

然而,随后调用pushPage(someOtherRoute)会产生

LoginPage
SomeOtherRouteComponent

我希望

LoginPage
HomePage
SomeOtherRouteComponent

我已经验证了同步等没有问题,当我将路由对象推到一个旁边的列表时,我得到的一切都没有任何损失。但只是pushPage没有像我预期的那样工作。

任何想法,或遗漏一些明显的东西?这些片段是TS。

1 个答案:

答案 0 :(得分:0)

页面加载期间的任何错误似乎都被Navigator捕获,这导致页面未被添加到路径中(但页面仍然导航到)。

我已经在github上提交了issue并附带了解决方法。另一种解决方法是确保在页面加载期间没有JS错误,如果存在第三方模块,则可能不是100%。