現在の動作
ルーティングに _react-navigation
_ v5を使用する反応ネイティブアプリケーションがあります。
(1)のため、私の構造はdrawerNavigator (a) > stackNavigator (b) > views (c)
です。
_<DrawerContent />
_内のuseNavigation()
フックを呼び出そうとすると、次のエラーが発生します。
_Error: We couldn't find a navigation object. Is your component inside a navigator?
at useNavigation (bundle.js:8766)
_
はい、私はstackNavigator
内にいないので、フックを呼び出すことができません
予想される動作
私は_<DrawerContent />
_内でナビゲーションを利用できると期待しています。
あなたの環境
_| software | version |
| ------------------------------ | ------- |
| iOS or Android | iOS, Android and web
| @react-navigation/native | 5.0.0-alpha.41
| @react-navigation/stack | 5.0.0-alpha.63
| @react-navigation/drawer | 5.0.0-alpha.41
| react-native-reanimated | 1.4.0
| react-native-gesture-handler | 1.5.3
| react-native-safe-area-context | 0.6.2
| react-native-screens | 2.0.0-alpha.32
| react-native | https://github.com/expo/react-native/archive/sdk-36.0.0.tar.gz
| expo | SDK36
| node | v13.5.0
| npm or yarn | 6.13.7
_
_@react-navigation/stack
_ 内部で _@react-navigation/drawer
_ をどのように使用できますか、それとも引き出しとアプリをどのように構築する必要がありますか?
ナビゲーターの画面を表示している場合は、useNavigation
を使用する必要はありません。
ナビゲーターの構造は以下の通りです。
画面の動きは以下の通りです。
例
_function HomeScreen({ navigation }) {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Button
onPress={() => navigation.navigate('moveScreenName')}
title="Go to moveScreenName"
/>
</View>
);
}
_
useNavigation
は、navigation
オブジェクトへのアクセスを提供するフックです。 navigation
プロップをコンポーネントに直接渡すことができない場合、または深くネストされた子の場合に渡したくない場合に便利です。
useNavigation()
は、内部にある画面のナビゲーションプロップを返します。
例
_function MyBackButton() {
const navigation = useNavigation();
return (
<Button
title="Back"
onPress={() => {
navigation.goBack();
}}
/>
);
}
_