J'essaie de revenir en arrière sur deux écrans. Le but est de passer de EditPage
à Cover
. Voici ma pile de navigation:
Main -> Cover -> EditCover -> EditPage
J'ai lu la documentation et il est dit de fournir une clé de l'écran à partir duquel vous voulez revenir, voici mon code:
this.props.navigation.dispatch(NavigationActions.back({key: 'EditCover'}));
J'ai aussi essayé (sans succès):
this.props.navigation.dispatch(NavigationActions.back('EditCover'));
this.props.navigation.dispatch(NavigationActions.back({key: 'EditCover'}));
this.props.navigation.dispatch(NavigationActions.back({routeName: 'EditCover'}));
this.props.navigation.goBack('EditCover');
this.props.navigation.goBack({key: 'EditCover'});
this.props.navigation.goBack({routeName: 'EditCover'});
La chose amusante dans tout cela est que je n’ai aucune erreur. Rien ne se passe lorsque le code est appelé ...
P.S. Si je veux juste revenir en arrière d'un écran, ce code fonctionne bien:
this.props.navigation.goBack(null);
P.S.S. Si quelqu'un trouve cela avant qu'il y ait une solution. Ce hack fonctionne pour l'instant:
this.props.navigation.goBack(null);
this.props.navigation.goBack(null);
la propriété key
pour goBack()
est une chaîne créée de manière dynamique, créée par react-navigation
lors de toute navigation vers un nouvel itinéraire.
Il est stocké dans this.props.navigation.state.key
.
Donc, si vous voulez passer de EditPage
à Cover
, vous devez passer la clé de EditCover
à EditPage
, puis appeler goBack()
avec la clé.
Cover
mais EditCover
?parce que react-navigation ne fournit que la méthode goBack(key)
, c'est revenir de la touche, pas revenir à la touche.
Éventuellement, fournissez une clé qui spécifie l'itinéraire à partir duquel vous revenez de . Par défaut, goBack ferme la route à partir de laquelle il est appelé. Si la L’objectif est de rentrer n’importe où, sans spécifier ce que l’on obtient. fermé, appelez .goBack (null);
EditCover.js
render() {
const { state, navigate } = this.props.navigation;
return (
<View>
<Button title="Go to Page" onPress={ () => {
/* pass key down to *EditPage* */
navigate('EditPage', { go_back_key: state.key });
}} />
</View>
);
}
EditPage.js
render() {
const { state, goBack } = this.props.navigation;
const params = state.params || {};
return (
<View>
<Button title="Back to Cover" onPress={ () => {
/* go back from *EditCover* to *Cover* */
goBack(params.go_back_key);
}} />
</View>
);
}
Pour React navigation 2, vous pouvez utiliser
this.props.navigation.dispatch(NavigationActions.back())
Aussi, ne pas oublier de mentionner dans chaque stacknavigator
initialRouteName: 'Posts'