La réinitialisation de la pile de navigation de l'écran d'accueil (réaction de Navigation et de Réagir en Natif)
J'ai un problème avec la navigation de Réagir De Navigation et de Réagir Natif. C'est sur la réinitialisation de la navigation et le retour à l'écran d'accueil.
J'ai un StackNavigator à l'intérieur d'un DrawerNavigator, et la navigation entre l'écran d'accueil et autres écrans de travail. Mais le problème, c'est que la pile de navigation se développe et grandit. Je ne suis pas sûr de savoir comment supprimer un écran à partir de la pile.
Par exemple lorsqu'on passe de l'écran d'accueil à l'écran paramètres, puis à l'écran de saisie et enfin de nouveau à l'écran d'accueil l'écran d'accueil est deux fois dans la pile. Avec le bouton de retour je ne sors pas de l'application, mais encore une fois à l'écran de saisie.
Lors de la sélection du bouton d'accueil une remise à zéro de la pile serait génial, mais je ne sais pas comment faire. Ici quelqu'un a essayé d'aider une autre personne avec un problème similaire, mais la solution n'a pas fonctionné pour moi.
const Stack = StackNavigator({
Home: {
screen: Home
},
Entry: {
screen: Entry
},
Settings: {
screen: Settings
}
})
export const Drawer = DrawerNavigator({
Home: {
screen: Stack
}},
{
contentComponent: HamburgerMenu
}
)
Et c'est un exemple simple de tiroir écran
export default class HamburgerMenu extends Component {
render () {
return <ScrollView>
<Icon.Button
name={'home'}
borderRadius={0}
size={25}
onPress={() => { this.props.navigation.navigate('Home')}}>
<Text>{I18n.t('home')}</Text>
</Icon.Button>
<Icon.Button
name={'settings'}
borderRadius={0}
size={25}
onPress={() => { this.props.navigation.navigate('Settings')}}>
<Text>{I18n.t('settings')}</Text>
</Icon.Button>
<Icon.Button
name={'entry'}
borderRadius={0}
size={25}
onPress={() => { this.props.navigation.navigate('Entry')}}>
<Text>{I18n.t('entry')}</Text>
</Icon.Button>
</ScrollView>
}
}
J'espère que vous pourrez m'aider. C'est une partie essentielle de la navigation et une solution serait génial!
Vous devez vous connecter pour publier un commentaire.
C'est Comment je le fais :
au moins remplacer "Menu" avec la "Maison".
Vous pouvez également adapter cette.accessoires de jeu.la navigation à votre mise en œuvre.
Voici comment je le fais:
Que les lingettes de la pile lors de la navigation d'un enfant navigator à un parent navigator.
Faire que si vous obtenez ce message d'erreur:
Pour les animations, j'utilise
Je viens de contrôle de toutes les animations de moi-même. Les mettre sur tout composant que vous souhaitez en l'enveloppant avec
<Animatable.View>
.key: null
est ce qui me manquait 🙂NavigationActions
dans votre action créateurs de fichiers et de réinitialiser la pile lorsque certaines actions viennent à travers.Pour les versions les plus récentes de réagir de la navigation, vous devez utiliser StackActions pour réinitialiser la pile, voici un morceau de code:
Settings
écran?À utiliser le Verso, vous devez trouver la clé unique associé avec le chemin d'accès. À l'intérieur de votre navigation réducteur, vous pouvez rechercher l'état actuel de trouver la première route sur la pile à l'aide de ce chemin, prenez la clé de sa & pass qu'à l'Arrière. De retour sera alors accédez à l'écran avant le chemin d'accès que vous avez donné.
La Réponse est createSwitchNavigator, c'ceux qui ne sont pas de la pile de votre navigation.
Ajouter votre auth écran/navigator dans un createSwitchNavigator avec l'écran d'accueil/de la pile.
Avec que, lorsque vous naviguez à partir de la maison pour se connecter, les piles ne sont pas conservés.
Pour en savoir plus sur elle
https://reactnavigation.org/docs/en/auth-flow.htmlLoginStack
Dans votre StackNavigator et DrawerNavigator vous avez utilisé à la Maison comme une clé, et je pense qu'il a d'unique et c'est pourquoi il est de la création du problème. Pouvez vous s'il vous plaît essayez de remplacer la Maison avec de la Pile à l'intérieur de votre DrawerNavigator.
Espère que cela aidera 🙂
Le menu action vous ramène à l'écran précédent dans la pile. La n de paramètre vous permet de spécifier combien d'écrans à l'arrière pop par.
n - nombre - Le nombre d'écrans à l'arrière pop par.
importer { StackActions } à partir de 'réagir de la navigation';
const popAction = StackActions.pop({
n: 1,
});
cette.accessoires de jeu.la navigation.dispatch(popAction);