2017-03-28 2 views
1

Je souhaite désactiver le glissement du geste pop gauche sur le navigateur après l'accès au menu latéral dans une scène. Je ne veux pas le désactiver lorsque la scène est restituée, uniquement lorsque le menu latéral est ouvert. J'ai une fonction onOpen que je peux appeler, mais je ne sais pas comment modifier par programme les gestes de navigation sans pousser un autre itinéraire.React Native Navigator: Puis-je supprimer des gestes de navigation d'une scène après une action de l'utilisateur?

J'essayé de placer l'hélice configureScene du navigateur comme ceci: configureScene={() => { return this.state.swipeBackNavigation ? FloatFromRight : Navigator.SceneConfigs.FloatFromRight; }

et changer l'état, mais le composant ne pas rerender

idées seraient appréciées

Répondre

1

Je crois que vous pouvez il suffit de mettre les gestes à zéro (en les désactivant):

gestures: {}

Je ne peux pas tester ce moment, mais je soupçonne que cela fonctionnera (si je ne l'ai pas bousiller une syntaxe quelque part):

export default class Foo extends Component { 
    constructor(props){ 
    super(props); 
     this.state = { 
     //initialize gestureChoice 
     gestureChoice: {}, 
     } 
    } 

    disablePop(){ 
    setState({ gestureChoice:{ gestures:{} } }); 
    } 
    enablePop(){ 
    setState({gestureChoice: ...Navigator.SceneConfigs.FloatFromRight}); 
    } 

    render(){ 
    return(
     <Navigator 
     renderScene={(route, navigator) => 
      return <SomeScene navigator={navigator} {...route.passprops} /> 
     } 
     configureScene={(route, routeStack) => 
      this.state.gestureChoice; 
     )} 
     /> 
    ); 
    } 
} 

L'idée étant, vous pouvez utiliser enablePop() et disablePop() chaque fois que vous voulez .

Ce fil est probablement utile: https://github.com/facebook/react-native/issues/1014

+1

Merci pour la réponse, mais je l'ai déjà essayé cela. Cela enlève les gestes, mais n'est efficace qu'une fois qu'un nouvel itinéraire a été poussé vers le navigateur, je voulais quelque chose qui le désactiverait sans pousser un nouvel itinéraire. S'il y avait un moyen de recharger la configuration du navigateur tout en restant sur le même itinéraire cela fonctionnerait –