2016-09-17 5 views
0

В проекте я намерен использовать только один элемент Navigator для обработки всей навигации по страницам.onsen react navigator pushpage перезаписывает последнюю страницу

На всем коде есть один синглтон appState, и navigator является его членом, он инициализируется внешним компонентом 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), новый Route, по-видимому, добавляется, когда проверяется во время добавления. То есть, я получаю следующее сразу после нажатия newRoute:

LoginPage 
HomePage 

Однако последующий вызов pushPage(someOtherRoute) дает

LoginPage 
SomeOtherRouteComponent 

Я ожидал бы

LoginPage 
HomePage 
SomeOtherRouteComponent 

Я проверил, что есть никаких проблем с синхронизацией и т. д., когда я нажимаю объект маршрута в список в сторону, я получаю все без потерь. Но только pushPage не работает, как я ожидаю.

Любые идеи или недостающие вещи очевидны? Отрывки - это TS.

ответ

0

Похоже, что любая ошибка при загрузке страницы ломается Navigator, и это приводит к тому, что страница не добавляется в маршруты (но страница по-прежнему перемещается).

Я подал issue на github с обходным решением. Альтернативный способ обхода - убедиться, что во время загрузки страницы нет ошибок JS, что может быть не на 100%, если присутствуют сторонние модули.