プロジェクトでDrawerナビゲーションを設計します。
次のコマンドでインストールしました:
npm install @react-navigation/drawer
次に、それをApp.js
にインポートしました
import { createDrawerNavigator } from '@react-navigation/drawer';
import { NavigationContainer } from '@react-navigation/native';
これは私のpackage.json
コンテンツです:
"@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",
これは私のApp.js
コンテンツです:
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>
)
};
私はすでにLogin
およびSecondPage
コンポーネントを作成し、それらをroot.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);
しかし、エラーが発生します(次の画面)。
どうすれば修正できますか?
index.js
export * from './login';
export * from './header';
export * from './secondpage';
export * from './footer';
export * from './thirdpage';
あなたが今何をしようとしているのか理解できません。引き出しナビを追加したいと思います。
あなたの問題は、1つのコンテナーを使用する必要があるが、2つあり、createStackNavigatorには2つのパラメーターがありますが、3つあるということです。
createStackNavigator(RouteConfigs、StackNavigatorConfig);
ナビゲーターの構造は次のようになっていると思います。
Drawers.js
export default const Drawers = () => {
const Drawer = createDrawerNavigator();
return (
<Drawer.Navigator initialRouteName="login">
<Drawer.Screen name="login" component={Login} />
<Drawer.Screen name="second" component={SecondPage} />
</Drawer.Navigator>
)
};
App.js
import Drawers from "./Drawers"
...
const AppNavigator = createStackNavigator({
login: { screen: Drawers },
header: { screen: Header },
second: { screen: SecondPage },
footer: { screen: Footer },
third: { screen: ThirdPage }
}, {
initialRouteName: 'login',
headerMode: 'none',
mode: 'modal',
});
export default createAppContainer(AppNavigator)
index.js
import Login from './login';
import Header from './header';
import SecondPage from './secondpage';
import Footer from './footer';
import ThirdPage from './thirdpage';
export { Login, Header, SecondPage, Footer, ThirdPage}
OR
この問題は、バージョンとの互換性の問題である可能性があります。
React-Navigation
およびStackNavigator
バージョンは最新である必要があります。
インストールしてみてください:糸追加反応ナビゲーションスタック
と依存関係:糸追加反応ネイティブジェスチャーハンドラ反応ネイティブアニメーション反応ネイティブスクリーン反応ネイティブセーフエリアコンテキスト@反応ネイティブコミュニティ/マスクされたビュー
ルート内:import {createStackNavigator} from 'react-navigation-stack';