2

J'ai un TabNavigator comme indiqué dans l'image. J'utilise TabNavigator pour créer ces onglets comme indiqué ci-dessous.Bloquer/Désactiver les onglets dans TabNavigator - react-navigation

const Tab_Navigator = TabNavigator({ 
    First:{ 
     screen: First, 
    }, 
    Second:{ 
     screen: Second, 
    }, 
    Third:{ 
     screen: Third, 
    }, 

maintenant Je veux bloquer/désactiver "Second" et onglets "tiers". Il devrait être visible mais on ne devrait pas pouvoir y accéder.

J'ai essayé de bloquer ces onglets comme indiqué here mais je suppose qu'il me manque quelque chose. Mon essai:

Tab_Navigator.router.getStateForAction = (action, state) => { 
if(action.type === NavigationActions.navigate({ routeName: "Second"}) || 
    action.type === NavigationActions.navigate({ routeName: "Third"})) 
{ 
    return null; 
} 

return Byte.router.getStateForAction(action, state); 

};

Répondre

4

Dans ce cas, l'action.type = "Navigation/NAVIGATE" et action.routeName est le nom de votre onglet. C'est juste un peu différent de l'exemple ReactNavigation Routers. Ce qui suit devrait fonctionner:

const defaultGetStateForAction = Tab_Navigator.router.getStateForAction; 

Tab_Navigator.router.getStateForAction = (action, state) => { 
    if ((action.type === NavigationActions.NAVIGATE) && 
    (action.routeName === "Second" || action.routeName === "Third") { 
    return null; 
    } 

    return defaultGetStateForAction(action, state); 
}; 

EDIT: Voici une image du Debugger nous avons arrêté à un point d'arrêt dans une pièce très similaire de code (les noms des onglets sont différents), mais il montre les valeurs de la « action "objet étant passé dans cette fonction. react native router disable tab

+0

MERCI, BEAUCOUP !! Désolé, je n'ai pas assez de réputation pour l'augmenter. Va le faire à l'avenir. – Smit

+0

Bien sûr. Pas de problème. Heureux que ça a aidé :) –