2017-07-09 4 views
0

Ich versuche, dynamisch den Titel meiner react-navigation Navigationsleiste zu ändern:Reagieren Navigation: Dynamische Titel nicht geändert

componentDidMount() { 
    InteractionManager.runAfterInteractions(() => 
     this.props.navigation.setParams({ title:"New Title" }); 
    }); 
} 

Obwohl ich diese Funktion überprüfen können, heißt, wird die Navigationsleiste nicht auf „Neu ändern Titel."

Übergeben Sie das falsche Objekt in die setParams()-Funktion?

Antwort

2

reagieren Navigation liest nicht den Titel aus dem params Objekt. Es verwendet die statische Eigenschaft navigationOptions für die Komponente.

Sie können diese Eigenschaft auf eine Funktion eingestellt:

static navigationOptions = ({navigation}) => { 
    title: navigation.state.params.title 
} 

Wenn Sie dann den param der Titel ändern sollte eingestellt.

+0

Danke für Ihre Antwort. Wie vermeiden Sie einen Fehler, wenn die App zuerst auf dem ersten Bildschirm des Navigationsstapels geladen wird und das Objekt navigation.state.params.title nicht definiert ist? –

+0

Sie können entweder initiale Parameter in der Routendefinition übergeben (beim Erstellen des Navigators), oder einfach im Code "navigationOptions" darauf testen und dort einen Standardwert haben. – Kraylog

+0

Ja, was ich getan habe, war das Hinzufügen von Logik, um den Fall zu behandeln, dass die Variable, die dem Titel zugewiesen wurde, nicht existierte und dann einen verifizierten Wert für den Titel zurückgab. –

Verwandte Themen