J'essaie de changer d'écran en utilisant à la fois la pile et le navigateur d'onglets.
const MainNavigation = StackNavigator({
otp: { screen: OTPlogin },
otpverify: { screen: OTPverification},
userVerified: {
screen: TabNavigator({
List: { screen: List },
Settings: { screen: Settings }
}),
},
});
Dans ce cas, stacknavigator est utilisé en premier, puis tabnavigator. et je veux cacher les en-têtes du navigateur de pile. WIt ne fonctionne pas correctement lorsque j'utilise les options de navigation telles que ::
navigationOptions: { header: { visible: false } }
j'essaie ce code sur les deux premiers composants utilisés dans stacknavigator. si j'utilise cette ligne puis obtenir une erreur comme ::
J'utilise ceci pour cacher la barre de pile (remarquez que c'est la valeur du deuxième paramètre):
{
headerMode: 'none',
navigationOptions: {
headerVisible: false,
}
}
Lorsque vous utilisez cette méthode, elle sera masquée sur tous les écrans.
Dans votre cas, cela ressemblera à ceci:
const MainNavigation = StackNavigator({
otp: { screen: OTPlogin },
otpverify: { screen: OTPverification },
userVerified: {
screen: TabNavigator({
List: { screen: List },
Settings: { screen: Settings }
}),
}
},
{
headerMode: 'none',
navigationOptions: {
headerVisible: false,
}
}
);
Il vous suffit d'utiliser le code ci-dessous dans la page pour masquer l'en-tête.
export default class Login extends Component {
static navigationOptions = {
header: null
}
}
se référer à Stack Navigator
Ajoutez simplement ceci dans votre extrait de code de classe/composant et l'en-tête sera masqué
static navigationOptions = { header: null }
Si vous souhaitez masquer sur un écran spécifique, procédez comme suit:
// create a component
export default class Login extends Component<{}> {
static navigationOptions = { header: null };
}
Si votre écran est un composant de classe
static navigationOptions = ({ navigation }) => {
return {
header: () => null
}
}
codez ceci dans votre écran ciblé comme première méthode (fonction).
Si quelqu'un cherche comment basculer en-tête, donc dans composantDidMount, écrivez quelque chose comme:
this.props.navigation.setParams({
hideHeader: true,
});
Quand
static navigationOptions = ({ navigation }) => {
const {params = {}} = navigation.state;
if (params.hideHeader) {
return {
header: null,
}
}
return {
headerLeft: <Text>Hi</Text>,
headerRight: <Text>Hi</Text>,
headerTitle: <Text>Hi</Text>
};
};
Et quelque part lorsque l'événement se termine travail:
this.props.navigation.setParams({
hideHeader: false,
});
J'utilise header : null
au lieu de header : { visible : true }
j'utilise react-native cli. voici l'exemple:
static navigationOptions = {
header : null
};
Utilisation
static navigationOptions = { header: null }
en classe/composant comme
class Login extends Component {
static navigationOptions = {
header: null
}
}
Cela a fonctionné pour moi:
const Routes = createStackNavigator({
Intro: {
screen: Intro,
navigationOptions: {
header: null,
}
}
},
{
initialRouteName: 'Intro',
}
);
Dans votre écran ciblé, vous devez coder ceci!
static navigationOptions = ({ navigation }) => {
return {
header: null
}
}
const CallStack = createStackNavigator({
Calls: Calls,
CallsScreen:CallsScreen,
}, {headerMode: 'none'});
CallStack.navigationOptions = {
tabBarLabel: 'Calls',
tabBarIcon: ({ focused }) => (
<TabBarIcon
focused={focused}
name={Platform.OS === 'ios' ? 'ios-options' : 'md-options'}
/>
),
header: null,
headerVisible: false,
};
Toutes les réponses montrent comment procéder avec les composants de classe, mais vous le faites pour les composants fonctionnels:
const MyComponent = () => {
return (
<SafeAreaView>
<Text>MyComponent</Text>
</SafeAreaView>
)
}
MyComponent.navigationOptions = ({ /*navigation*/ }) => {
return {
header: null
}
}
Si vous supprimez l'en-tête, votre composant risque de ne pas être visible (lorsque le téléphone n'a pas d'écran carré). Il est donc important de l'utiliser lors de la suppression de l'en-tête.
J'ai le même problème mais j'ai fait mon travail d'en-tête dans les classes individuelles en utilisant navigationOptions
et j'utilise createBottomTabNavigator
dont l'en-tête est visible et l'en-tête de classes n'est pas visible. J'ai tout essayé comme headerMode: none
, header: null
et ainsi de suite, mais je n'ai pas pu masquer l'en-tête de bottomTabNavigator
.