2017-12-23 15 views
1

Auf meiner Standard-Reagieren Navigation Registerkarte Bildschirm möchte ich den Titel des Bildschirms auf einen Wert aus einem MobX Store setzen. Es ist mein Verständnis, dass der einzige Weg dies zu tun ist, den Wert über einen Parameter zu übergeben - also kann ich nicht einfach den MobX-Wert in das 'title:' Feld setzen ... aber da dies der 'Standard' Bildschirm ist I Ich übergebe nichts.Möglichkeit, einen React Navigation-Bildschirmtitel mit MobX-Speicherwert dynamisch festzulegen?

Standardbildschirm:

export default class HomeScreen extends Component { 
    static navigationOptions = ({ navigation, screenProps }) => ({ 
    title: `This is ${navigation.state.params.title}`, 

Ich habe die Verwendung von setParams während componentWillMount zu machen versucht, aber console.log zeigt mir es zu spät geschehen muss, so dass ich ein leeres Objekt im Titel.

Irgendeine Idee, wie man das macht?

Antwort

0

Hatte das gleiche Problem heute und fand es heraus.

Ändern Sie einfach Ihre navigationOptions in eine Funktion anstelle eines Objekts, auf diese Weise wird es bei Zustandsänderungen neu auswerten. Hier ist die Lösung für Sie, wie im Handbuch unter https://reactnavigation.org/docs/intro/headers#Header-interaction-with-screen-component beschrieben:

static navigationOptions = ({ navigation }) => { 
    const { params = {} } = navigation.state; 
    const title = `This is ${params.title}`; 
    return { title }; 
}; 
Verwandte Themen