1
votes

Impossible de trouver la variable: DrawerActions

Je suis très nouveau pour réagir natif. Je crée un exemple d'application avec la navigation dans les tiroirs et la navigation dans la pile. J'obtiens encore et encore une erreur dans le code du tiroir dans le bouton du tiroir. Comment ouvrir et fermer mon tiroir? J'ai beaucoup essayé de rechercher sur Internet. Et j'ai essayé tout ce que j'ai. Mais rien n'y fit. Toute aide est appréciée. J'ai écrit le code suivant:

this.props.navigation.openDrawer()  

J'obtiens l'erreur suivante: Impossible de trouver la variable: 'DrawerActions'.

Try1:

Undefined is not a function(evaluating'navigation.toggleDrawer()')  

Erreur reçue:

navigationOptions: ({navigation}) => ({
  headerLeft:(
    <TouchableOpacity onPress={() => navigation.toggleDrawer()}>
      <Text>Drawer</Text>
    </TouchableOpacity>
  ),
})

Try2:

import React, {Component} from 'react';
import {createDrawerNavigator, createStackNavigator, createAppContainer} from 'react-navigation';
import {TouchableOpacity, Text} from 'react-native';
import Signup from './Screens/Signup'; 
import SignIn from './Screens/SignIn';
import TradeType from './Screens/TradeType';
import SState from './Screens/SState';
import IState from './Screens/IState';
import Result from './Screens/Result';
import Home from './Screens/Home';
import DrawerTbl from './Screens/DrawerTbl';

export const Drawer = createDrawerNavigator({
  SignIn: {screen: SignIn},
  Home: {screen: Home},
}, {
  initialRouteName: 'SignIn',
  contentComponent: 'DrawerTbl',
  drawerWidth: 300
});

export const Stack = createStackNavigator({
  SignIn: {screen: SignIn,
  navigationOptions: ({navigation}) => ({
     headerLeft:(
        <TouchableOpacity onPress={() => navigation.dispatch(DrawerActions.toggleDrawer())}>
          <Text>Drawer</Text>
        </TouchableOpacity>
     ),
   })
 },
   Signup: {screen: Signup},
   Home: { screen: Home },
   Drawer: { screen: Drawer },
   DrawerTbl: { screen: DrawerTbl },
   Trade: { screen: TradeType },
   SState: { screen: SState },
   IState: { screen: IState },
   Result: { screen: Result } 
 },
 {
    initialRouteName: "SignIn",
 });

const AppC = createAppContainer(Stack);

class App extends Component {
  render() {
    return(
     <AppC/>
    );
  }
}

export default App;

Vous avez également une erreur dans ce domaine.


0 commentaires

3 Réponses :


1
votes

vous avez oublié de

import { DrawerActions } from 'react-navigation'


1 commentaires

Merci d'avoir répondu @Shashin. J'ai importé {DrawerActions}. Maintenant, je n'obtiens pas d'erreur. mais je ne parviens toujours pas à ouvrir le tiroir en cliquant sur le bouton Tiroir.



1
votes

Pour vous DrawerActions, vous devez d'abord importer DrawerActions depuis React-navigation. Pour React Navigation 3.x

importer {DrawerActions} depuis 'react-navigation-tiroir';

this.props.navigation.dispatch (DrawerActions.toggleDrawer ())

Vous êtes prêt à partir!


0 commentaires

1
votes

La manière dont vous importez les modifications de DrawerActions avec la version React Navigation, il est donc préférable de la rechercher pour votre version de la documentation.

Pour React Navigation 4.X:

import { DrawerActions } from '@react-navigation/native';

Pour React Navigation 5.X:

import { DrawerActions } from 'react-navigation-drawer';


0 commentaires