Je cherche une solution depuis longtemps, mais étonnamment, je pense que personne ne l’a encore rencontrée. Donc je l'affiche.
J'ai créé un navigateur de tiroir simple avec React Navigation V3. J'ai ajouté une icône de menu et lorsque je clique dessus, le tiroir apparaît comme il se doit. Mais aucun geste de la main ne fonctionne. Glisser de gauche à droite ne fait rien. Même lorsque le tiroir est ouvert, taper sur un espace vide ne ferme pas le tiroir.
Voici mon code:
import {
createStackNavigator,
createSwitchNavigator,
createAppContainer,
createDrawerNavigator
} from 'react-navigation';
import Home from './screens/Home';
import LoginForm from './screens/LoginForm';
import Articles from './screens/Articles';
const AuthStack = createStackNavigator({
LoginScreen: LoginForm
});
const AppStack = createDrawerNavigator({
HomeScreen: Home,
ArticlesScreen: Articles
});
const RootNavigator = createSwitchNavigator(
{
Auth: AuthStack,
App: AppStack
},
{
initialRouteName: 'Auth'
}
);
export default createAppContainer(RootNavigator);
J'ai trouvé la solution. React La navigation dépend de la bibliothèque react-native-gesture-handler
. Dans la section Installation de React Navigation Docs, il est uniquement indiqué de créer un lien à l'aide de la commande react-native link
. C'est assez pour iOS. Mais pour Android, vous devez éditer le fichier MainActivity.Java
, afin que la bibliothèque du gestionnaire de mouvements puisse fonctionner comme prévu:
import com.facebook.react.ReactActivity;
+ import com.facebook.react.ReactActivityDelegate;
+ import com.facebook.react.ReactRootView;
+ import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
public class MainActivity extends ReactActivity {
@Override
protected String getMainComponentName() {
return "Example";
}
+ @Override
+ protected ReactActivityDelegate createReactActivityDelegate() {
+ return new ReactActivityDelegate(this, getMainComponentName()) {
+ @Override
+ protected ReactRootView createRootView() {
+ return new RNGestureHandlerEnabledRootView(MainActivity.this);
+ }
+ };
+ }
}
Reportez-vous à la documentation: https://kmagiera.github.io/react-native-gesture-handler/docs/getting-started.html
En fait, il n’est nulle part indiqué dans React Navigation Documentation de modifier les fichiers, car il est spécifique à react-native-gesture-handler
et non React Navigation
. Je garde la réponse ici pour que cela puisse aider les autres.
UPDATE: Les derniers documents de React Navigation abordent ce problème.