2016-11-15 2 views
0

У меня есть приложение React Native, и я использую navigator.back(), когда мне нужно вернуться. Но я заметил проблему.
Например, если у меня есть три страницы A, B, C, и я начинаю с A, тогда я иду в B, на C, а затем возвращаюсь к B, и теперь, если я позвоню navigator.back(), он приведет меня на страницу C, но я ожидал увидеть страницу A.Как заставить навигатор работать правильно?

Кто-нибудь знает, как решить эту проблему?

Вот пример моего кода:

import React, { Component } from 'react' 
     import { 
      StyleSheet, 
      View, 
      StatusBar, 
      Navigator 
     } from 'react-native' 
    ... 
     _renderScene (route, navigator) { 
      switch (route.name) { 
       case RouteName.Home: 
       return <Home navigator={navigator} /> 
       case RouteName.Library: 
       return <Library navigator={navigator} /> 
       case RouteName.BookDetails: 
       return <Details navigator={navigator} book={route.passProps.book} /> 
     default: 
       console.error('Encountered unexpected route: ' + route.name) 
      } 
      return <Home /> 
      } 

... 

    export class Library extends React.Component { 
     constructor (props) { 
     super(props) 
     } 

     render(){ 
     return (
      <View style={styles.library}> 
       <Header title={LocalizationService.translate('MyLibrary')} navigator={this.props.navigator} /> 
       <ScrollView> 
       <Accordion 
        ref='accordion' 
        sections={this.state.sections} 
        initiallyActiveSection={0} 
        renderHeader={this._renderHeader} 
        renderContent={this._renderContent.bind(this)} 
       /> 
       </ScrollView> 
      </View> 
     ) 
     } 
    } 


    export class Header extends Component { 
     constructor (props) { 
     super(props) 

     this.state = { 
      title: '' 
     } 

     this._onClose = this._onClose.bind(this) 
     } 


     _onClose() { 
     let { onClose, navigator } = this.props 

     if (onClose) { 
      onClose() 
     } else { 
      navigator && navigator.pop() 
     } 
     } 
    } 

    Header.propTypes = { 
     title: React.PropTypes.string, 
     navigator: React.PropTypes.object, 
     onClose: React.PropTypes.func 
    } 
+0

Это не похоже на нормальное поведение. Вы уверены, что идете * назад * в B, а не * вперед * в B? – Quentin

+0

, когда я перейти от С к В Я использую этот метод: _goBack() { this.props.navigator.back() } – Dmitry

+0

_renderScene (маршрут, навигатор) { переключатель (route.name) {случай RouteName. книгаПодробности: возврат <Подробнее навигатор = {навигатор} книга = {route.passProps.book} /> – Dmitry

ответ

0

Похоже, что метод, который вы ищете является .pop()

https://facebook.github.io/react-native/docs/navigator.html#pop

вызывающему navigator.pop() размонтирует компонент на вершине стек и перейти к предыдущему.

+0

Я пробовал этот метод, но по какой-то причине он вообще не работает. Возможно, мне нужно изменить что-то еще, чтобы использовать pop(). @john_ryan – Dmitry

+0

Да, если бы вы могли привести полный пример кода к своему вопросу, вероятно, было бы полезно указать проблему, например, как настроить навигатор и как передать навигатор компонентам. –

+0

добавленный пример кода. @john_ryan – Dmitry

Смежные вопросы