我试图从API获取数据到Android,但发生了一些事情,阻止我获取数据或导致超时错误。我已经在以下平台上测试了这段代码:
1.零食博览会(网络):它通过了,我能够成功获取数据。
- Expo(本地主机:web):它通过了,我能够成功获取数据。
- Expo(Android Emulator):它失败了,因为它花了很长时间来加载,没有收到任何数据。
- Expo GO(真实的设备):它失败,并显示错误消息“未捕获错误:java.net.ConnectException:无法连接到/ip“”。
版本
- “expo”:“~48.0.15”,
- “react”:“18.2.0”,
- “react-native”:“0.71.8”,
- 这是我的代码,App.json如下
应用:
import React, { useEffect, useState } from 'react';
import { View, Text, FlatList } from 'react-native';
export default function Test2() {
const [data, setData] = useState([]);
useEffect(() => {
fetchData();
}, []);
const fetchData = () => {
console.log("start");
fetch('https://646ee64209ff19b120864a07.mockapi.io/users')
.then(response => response.json())
.then(data => {
console.log("data:", data);
setData(data);
})
.catch(error => {
console.error(error);
})
.finally(() => {
console.log("end");
});
};
return (
<View>
<FlatList
data={data}
renderItem={({ item }) => (
<View>
<Text>Id user: {item.id}</Text>
<Text>Name user: {item.name}</Text>
<Text>-------------------------</Text>
</View>
)}
keyExtractor={item => item.id}
/>
</View>
);
}
App.Json
{
"expo": {
"name": "MyApp",
"slug": "MyApp",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"userInterfaceStyle": "light",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"supportsTablet": true
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#ffffff"
}
},
"web": {
"favicon": "./assets/favicon.png"
}
}
}
我试过:
- 检查互联网:良好连接
- 检查JSON文件:传球
我用来测试的JSON链接:https://646ee64209ff19b120864a07.mockapi.io/users
2条答案
按热度按时间nwsw7zdq1#
尝试在androidManifest.xml文件中添加此内容
xwbd5t1u2#
30分钟后,我找到了答案。由于Expo没有Manifest文件,我们将以另一种方式进行将此代码添加到app.json:
//如果文件中已经存在任何部分,则跳过该部分