下記のソースコードをExpo環境下で実行しています。
その際、Webブラウザー、androidエミュレーターともに正常に表示されます。
また、Expo Snackにおいてもどの機種でも正常に表示されました。
しかしながら、iPhone実機のみ下記エラー内容が表示されます。
Error
1Unable to resolve "./NavigationNativeContainer" from "node_modules\@react-navigation\native\src\index.tsx"
エラーの中身を見ても、そもそもNacigationNativeContainerが使われておらず原因がわかりません。
なお、ライブラリのバージョンは以下です。
Package.json "@react-native-community/masked-view": "^0.1.10", "@react-navigation/bottom-tabs": "^5.3.3", "@react-navigation/native": "^5.2.3", "@react-navigation/stack": "^5.2.18", "expo": "~37.0.3", "react": "~16.9.0", "react-dom": "~16.9.0", "react-native": "https://github.com/expo/react-native/archive/sdk-37.0.1.tar.gz", "react-native-elements": "^2.0.0", "react-native-gesture-handler": "^1.6.1", "react-native-reanimated": "^1.8.0", "react-native-safe-area-context": "^0.7.3", "react-native-screens": "^2.7.0", "react-native-web": "~0.11.7"
この投稿の前に、
- Expo再インストール
- パッケージすべて再インストール
- その後ファイルを再び作成
の手順は踏んでおります。
何かわかる方がいらっしゃいましたら、是非ご教示のほどよろしくお願いします。
React
1import * as React from 'react'; 2import { Button, View, Text } from 'react-native'; 3import { NavigationContainer } from '@react-navigation/native'; 4import { createStackNavigator } from '@react-navigation/stack'; 5import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; 6import { ListItem } from 'react-native-elements'; 7import { FlatList } from 'react-native-gesture-handler'; 8 9function SettingsScreen({ navigation }) { 10 11 const [data,setData] = React.useState([]) 12 const [load,isLoaded] = React.useState(false) 13 14 function getNews() { 15 16 var url = "https://newsapi.org/v2/top-headlines?"+'country=jp&'+'apiKey=(myAPIkey)'; 17 fetch(url).then((response) => response.json()) 18 .then((result) => { 19 setData(result.articles) 20 isLoaded(true) 21 }) 22 } 23 24 React.useEffect(() => { 25 getNews(); 26 27 },[]) 28 console.log({data}) 29 const keyExtractor = (item,index) => index.toString(); 30 const renderItem = ({item}) => ( 31 <ListItem 32 title={item.title} 33 subtitle={item.url} 34 leftAvatar={{source:{uri:item.urlToImage}}} 35 bottomDivider 36 chevron/> 37 ) 38 39 40 return ( 41 <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> 42 <Text>Settings Screen</Text> 43 <View style={{width:"100%"}}> 44 <FlatList 45 keyExtractor={keyExtractor} 46 data={data} 47 renderItem={renderItem} 48 /> 49 </View> 50 <Button 51 title="Go to Profile" 52 onPress={() => navigation.navigate('Profile')} 53 /> 54 </View> 55 ); 56} 57 58function ProfileScreen({ navigation }) { 59 return ( 60 <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> 61 <Text>Profile Screen</Text> 62 <Button 63 title="Go to Settings" 64 onPress={() => navigation.navigate('Settings')} 65 /> 66 </View> 67 ); 68} 69 70function HomeScreen({ navigation }) { 71 return ( 72 <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> 73 <Text>Home Screen</Text> 74 <Button 75 title="Go to Details" 76 onPress={() => navigation.navigate('Details')} 77 /> 78 </View> 79 ); 80} 81 82function DetailsScreen({ navigation }) { 83 return ( 84 <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> 85 <Text>Details Screen</Text> 86 <Button 87 title="Go to Details... again" 88 onPress={() => navigation.push('Details')} 89 /> 90 </View> 91 ); 92} 93const Tab = createBottomTabNavigator(); 94const SettingsStack = createStackNavigator(); 95const HomeStack = createStackNavigator(); 96 97export default function App() { 98 return ( 99 <NavigationContainer> 100 <Tab.Navigator> 101 <Tab.Screen name="First"> 102 {() => ( 103 <SettingsStack.Navigator> 104 <SettingsStack.Screen 105 name="Settings" 106 component={SettingsScreen} 107 /> 108 <SettingsStack.Screen name="Profile" component={ProfileScreen} /> 109 </SettingsStack.Navigator> 110 )} 111 </Tab.Screen> 112 <Tab.Screen name="Second"> 113 {() => ( 114 <HomeStack.Navigator> 115 <HomeStack.Screen name="Home" component={HomeScreen} /> 116 <HomeStack.Screen name="Details" component={DetailsScreen} /> 117 </HomeStack.Navigator> 118 )} 119 </Tab.Screen> 120 </Tab.Navigator> 121 </NavigationContainer> 122 ); 123} 124
あなたの回答
tips
プレビュー