Vou projetar uma navegação de gaveta no meu projeto.
Eu instalei isso por este comando:
npm install @react-navigation/drawer
Então importou isso para App.js
import { createDrawerNavigator } from '@react-navigation/drawer';
import { NavigationContainer } from '@react-navigation/native';
Este é o meu package.json
conteúdo:
"@react-native-community/masked-view": "^0.1.6",
"@react-navigation/drawer": "^5.0.0",
"react": "16.9.0",
"react-native": "0.61.5",
"react-native-gesture-handler": "^1.5.6",
"react-native-reanimated": "^1.7.0",
"react-native-screens": "^2.0.0-beta.1",
"react-native-view-shot": "^3.0.2",
"react-navigation": "^4.1.1",
"react-navigation-stack": "^2.1.0",
Este é o meu App.js
conteúdo:
const App = () => {
const Drawer = createDrawerNavigator();
return (
<View style={styles.container}>
<NavigationContainer>
<Drawer.Navigator initialRouteName="login">
<Drawer.Screen name="login" component={Login} />
<Drawer.Screen name="second" component={SecondPage} />
</Drawer.Navigator>
</NavigationContainer>
</View>
)
};
Devo dizer que já criei Login
e SecondPage
componentes e os declarei em um arquivo chamadoroot.js
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
import { Login, Header, SecondPage, Footer, ThirdPage } from './components/index';
const AppNavigator = createStackNavigator({
login: { screen: Login },
header: { screen: Header },
second: { screen: SecondPage },
footer: { screen: Footer },
third: { screen: ThirdPage }
}, {
initialRouteName: 'login',
headerMode: 'none',
mode: 'modal',
}, {});
export default createAppContainer(AppNavigator);
Mas estou recebendo um erro (tela a seguir).
Como posso consertar isso?
index.js
export * from './login';
export * from './header';
export * from './secondpage';
export * from './footer';
export * from './thirdpage';
Respostas:
Não entendo o que você está tentando fazer agora. Eu acho que você deseja adicionar uma gaveta Navigator.
Seu problema é que você precisa usar um contêiner, mas você tem dois, e createStackNavigator possui dois parâmetros, mas você possui três.
Eu acho que sua estrutura de navegador deve ser a seguinte.
Drawers.js
App.js
index.js
OU
fonte
Você está combinando o React Navigation 4 e o React Navigation 5 no seu projeto. Não é válido.
Reagir Navigation 4 pacotes:
react-navigation
,react-navigation-stack
,react-navigation-drawer
etc.Reagir Navigation 5 pacotes:
@react-navigation/native
,@react-navigation/stack
,@react-navigation/drawer
etc.Siga os documentos oficiais e use a versão e sintaxe corretas dos pacotes https://reactnavigation.org/docs/en/getting-started.html
Basicamente, remova seu código
root.js
e crie um navegador de pilha como aqui https://reactnavigation.org/docs/en/stack-navigator.htmlfonte
tente instalar: yarn add react-navigation-stack
e dependências: yarn add react-native-gesto-manipulador react-native-reanimated react-native-screens reage-nativo-área-segura-contexto-contexto @ react-native-community / masked-view
em suas rotas: importe {createStackNavigator} de 'react-navigation-stack';
fonte
Conteúdo Index.js
fonte