2016-09-17 21 views
0

在一個項目中,我的意圖是隻使用一個Navigator元素來處理所有的頁面導航。onsen反應導航器pushpage覆蓋最後一頁

整個代碼中有一個單例appState,而navigator是其中的成員,它由最外層的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

正確:

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

該導航儀的啓動。當我打電話給pushPage(newRoute)時,顯然在添加時檢查新的路由。也就是說,推newRoute之後我得到以下幾點:

LoginPage 
HomePage 

然而,pushPage(someOtherRoute)的後續調用產生

LoginPage 
SomeOtherRouteComponent 

我希望

LoginPage 
HomePage 
SomeOtherRouteComponent 

我已經證實沒有沒有同步等問題,當我把路由對象推到旁邊的列表時,我得到了一切,沒有任何損失。但只是pushPage沒有按照我的預期工作。

任何想法,或缺少明顯的東西?片段是TS。

回答

0

看起來頁面加載過程中的任何錯誤都會被Navigator所捕獲,並且導致頁面未被添加到路由中(但頁面仍然被導航到)。

我已經在github上提交了一個issue解決方法。另一種解決方法是確保在頁面加載過程中不存在JS錯誤,在第三方模塊存在的情況下這可能不是100%。