J'utilise réaction StackNavigator de navigation native (réact-navigation). il commence à partir de la page de connexion tout au long du cycle de vie de l'application. Je ne souhaite pas avoir d’option de retour pour revenir à l’écran de connexion. Est-ce que quelqu'un sait comment il peut être caché à l'écran après l'écran de connexion? BTW, je le cache également dans l'écran de connexion en utilisant:
const MainStack = StackNavigator({
Login: {
screen: Login,
navigationOptions: {
title: "Login",
header: {
visible: false,
},
},
},
// ... other screens here
})
Pour la version de react-navigation v1> = 1.0.0-beta.9, pour faire disparaître le bouton Précédent:
navigationOptions: {
title: 'MyScreen',
headerLeft: null
}
Si vous souhaitez également nettoyer la pile de navigation, vous pouvez procéder de la manière suivante (en supposant que vous soyez sur l'écran à partir duquel vous souhaitez naviguer):
import { NavigationActions } from 'react-navigation';
et utilisez une fonction pour accéder à l'itinéraire cible et désactivez toutes les fonctionnalités arrière:
resetNavigation(targetRoute) {
const resetAction = NavigationActions.reset({
index: 0,
actions: [
NavigationActions.navigate({ routeName: targetRoute }),
],
});
this.props.navigation.dispatch(resetAction);
}
puis appelez this.resetNavigation('myRouteWithDisabledBackFunctionality')
quand vous voulez naviguer vers l'itinéraire cible
Pour la version 2 de react-navigation, vous devez utiliser StackAction.reset(...)
au lieu de NavigationActions.reset
import { StackActions, NavigationActions } from 'react-navigation';
const resetAction = StackActions.reset({
index: 0, // <-- currect active route from actions array
actions: [
NavigationActions.navigate({ routeName: 'myRouteWithDisabledBackFunctionality' }),
],
});
this.props.navigation.dispatch(resetAction);
Plus d'infos ici: https://reactnavigation.org/docs/fr/stack-actions.html
Vous pouvez masquer le bouton Précédent à l'aide de left:null
, mais pour les appareils Android, il est toujours possible de revenir en arrière lorsque l'utilisateur appuie sur le bouton Précédent. Vous devez réinitialiser l'état de navigation et masquer le bouton avec left:null
Voici la documentation permettant de réinitialiser l'état de navigation: https://reactnavigation.org/docs/navigators/navigation-actions#Reset
Cette solution fonctionne pour react-navigator 1.0.0-beta.7
, cependant left:null
ne fonctionne plus pour la dernière version.
Avez-vous envisagé d'utiliser this.props.navigation.replace( "HomeScreen" )
au lieu de this.props.navigation.navigate( "HomeScreen" )
.
De cette façon, vous n’ajoutez rien à la pile. donc HomeScreen ne fera pas signe à quoi que ce soit pour revenir si le bouton précédent est enfoncé dans Android ou si l'écran est glissé vers la droite dans IOS.
Plus d'informations sur le Documentation . Et bien sûr, vous pouvez masquer le bouton Précédent en définissant headerLeft: null
dans navigationOptions
Nous devons définir false à gesturesEnabled
avec headerLeft
à null
. Parce que nous pouvons revenir en arrière en balayant l'écran également.
navigationOptions: {
title: 'Title',
headerLeft: null,
gesturesEnabled: false,
}
je l'ai trouvé moi-même;)
left: null,
désactiver le bouton de retour par défaut.
const MainStack = StackNavigator({
Login: {
screen: Login,
navigationOptions: {
title: "Login",
header: {
visible: false,
},
},
},
FirstPage: {
screen: FirstPage,
navigationOptions: {
title: "FirstPage",
header: {
left: null,
}
},
},
versions de réaction> = 1.0.0-beta.9
navigationOptions: {
headerLeft: null}
en utilisant le BackHandler de Rea natif a fonctionné pour moi. Incluez simplement cette ligne dans votre ComponentWillMount:
BackHandler.addEventListener('hardwareBackPress', function() {return true})
il désactivera le bouton de retour sur le périphérique Android.
Le SwitchNavigator serait le moyen d'y parvenir. SwitchNavigator
réinitialise les itinéraires par défaut et démonte l'écran d'authentification lorsque l'action navigate
est invoquée.
import { createSwitchNavigator, createStackNavigator, createAppContainer } from 'react-navigation';
// Implementation of HomeScreen, OtherScreen, SignInScreen, AuthLoadingScreen
// goes here.
const AppStack = createStackNavigator({ Home: HomeScreen, Other: OtherScreen });
const AuthStack = createStackNavigator({ SignIn: SignInScreen });
export default createAppContainer(createSwitchNavigator(
{
AuthLoading: AuthLoadingScreen,
App: AppStack,
Auth: AuthStack,
},
{
initialRouteName: 'AuthLoading',
}
));
Une fois que l'utilisateur a accédé à SignInScreen et saisi ses informations d'identification, vous appelez
this.props.navigation.navigate('App');
Dans la dernière version (v2) fonctionne headerLeft:null
. vous pouvez ajouter dans la variable navigationOptions
du contrôleur comme ci-dessous
static navigationOptions = {
headerLeft: null,
};
je pense que c'est simple, il suffit d'ajouter headerLeft : null
, j'utilise react-native cli, voici l'exemple:
static navigationOptions = {
headerLeft : null
};
Nous pouvons le réparer en définissant headerLeft sur null
static navigationOptions =({navigation}) => {
return {
title: 'Rechercher une ville',
headerLeft: null,
}
}
Pour la dernière version de React Navigation, même si vous utilisez null dans certains cas, il est toujours possible que "back" soit écrit!
Allez-y dans votre main app.js sous votre nom d’écran ou allez simplement dans votre fichier class et ajoutez: -
static navigationOptions = {
headerTitle:'Disable back Options',
headerTitleStyle: {color:'white'},
headerStyle: {backgroundColor:'black'},
headerTintColor: 'red',
headerForceInset: {vertical: 'never'},
headerLeft: " "
}