2017-03-14 1 views
0

Ich habe eine komplexe App, mit vielen Zeilen, also möchte ich Dateien maximal aufteilen, um Dateien von mehreren Zeilen zu vermeiden.Native deport Navigator.NavigationBar auf eine andere Datei reagieren (sauberer Code)

Hier ist mein Code:

export default class Nav extends Component { 
return(
    <Navigator 
    initialRoute={ ... } 
    renderScene={ ... } 
    navigationBar={ <Navigator.NavigationBar routeMapper={ ... }/> } 
    /> 
) 
} 

Hier ist, was ich erreichen möchte:

export default class Nav extends Component { 
return(
    <Navigator 
    initialRoute={ ... } 
    renderScene={ ... } 
    navigationBar={ <MyNavigationBar/> } 
    /> 
) 
} 

export default class MyNavigationBar extends Component { 
return(
    <Navigator.NavigationBar routeMapper={ ... }/> 
) 
} 

Aber wenn ich dies tun, habe ich eine Ausnahme: undefiniert ist kein Objekt (Bewertung ' navState.routeStack ')

Warum ist das? Wie soll ich es machen ?

Antwort

1

Ich denke, Ihre NavigationBar Komponente fehlt jetzt einige Eigenschaften.

Sie sollten versuchen, alle Eigenschaften an die Komponente NavigationBar zu übergeben.

Als documentation

Diese Komponente wird in den genannten zwei Stützen wird erhalten: Navigator und den Navigator navState Komponente und seinen Zustand darstellt. Die Komponente wird erneut gerendert, wenn sich die Route ändert.

Versuchen Sie folgendes:

export default class MyNavigationBar extends Component { 
    return(
    <Navigator.NavigationBar {...this.props} routeMapper={ ... }/> 
) 
} 
+0

Ich glaube, Sie die Lösung gefunden, aber ich bin immer noch neue native zu reagieren und ich es nicht schaffen, es richtig noch zu bekommen. Könntest du Nav und MyNavigationBar bearbeiten und ein bisschen mehr entwickeln? – alexandre

+0

Ich bekomme nicht, wie man Navigator und navState an Navigator.NavigationBar ... weitergibt – alexandre

+0

Hat meine obere Antwort funktioniert? Das Problem hierbei ist, dass 'navigationBar' aus' Navigator' 2 Eigenschaften übergibt, die für die 'Navigator.NavigationBar' Komponente benötigt werden. Ihre 'MyNavigationBar' wird nun diese Requisiten erhalten. Damit die 'Navigationsleiste' funktioniert, können Sie alle Parameter an sie übergeben. '... this.props' wird das selbe wie' navigator = {this.props.navigator} navState = {this.props.navState} ' –

Verwandte Themen