2016-11-15 4 views
0

Ich habe React Native App und ich verwende navigator.back(), wenn ich zurück muss. Aber ich habe das Problem bemerkt.
Zum Beispiel, wenn ich drei Seiten habe A, B, C und ich beginnen mit A, dann gehe ich zu B, zu C, dann gehe zurück zu B und jetzt, wenn ich rufe navigator.back() es führt mich zu Seite C, aber ich erwartete, Seite A zu sehen.Wie funktioniert der Navigator?

Weiß jemand, wie man dieses Problem löst? Hier

ist ein Beispiel für meine Code:

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

Das klingt nicht wie normales Verhalten. Bist du sicher, dass du * zurück * nach B und nicht * vor * nach B gehst? – Quentin

+0

Wenn ich von C nach B gehe, verwende ich diese Methode: _goBack() { this.props.navigator.back() } – Dmitry

+0

_renderScene (Route, Navigator) { Schalter (route.name) {Fall RouteName. bookDetails: zurück

Dmitry

Antwort

0

Es ist wie die Methode scheint Sie suchen ist .pop()

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

Aufruf navigator.pop() wird die Komponente auf der Oberseite des aushängen der Stapel und gehe zum vorherigen.

+0

Ich habe diese Methode versucht, aber es funktioniert überhaupt nicht, aus irgendeinem Grund. Vielleicht muss ich etwas anderes ändern, um pop() zu verwenden. @john_ryan – Dmitry

+0

ja, wenn Sie das vollständige Codebeispiel zu Ihrer Frage hätten, wäre es wahrscheinlich hilfreich, das Problem aufzuzeigen, zum Beispiel, wie Sie den Navigator einrichten und wie Sie den Navigator an die Komponenten übergeben. –

+0

hinzugefügtes Codebeispiel. @john_ryan – Dmitry