You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中Fetch请求远程JSON文件真机加载缓慢、模拟器即时响应的问题排查求助

真机Fetch请求加载缓慢的排查方向(Motorola One Vision)

针对你遇到的模拟器请求正常、真机加载极慢的问题,结合你的测试场景和代码,我整理了几个核心排查方向:

1. 网络环境与设备差异

  • 模拟器依托电脑网络,通常稳定性和带宽更好;而真机的移动网络/Wi-Fi可能存在DNS解析延迟、信号弱、运营商路由限制等问题。先在真机浏览器中直接打开你的JSON链接,如果浏览器加载也慢,那大概率是网络本身的问题,和代码无关。
  • 部分安卓设备会对HTTPS请求做额外的安全校验,比如系统版本较旧(Motorola One Vision搭载Android 9/10)可能不支持服务器证书的加密算法,导致请求卡在证书验证环节。

2. 基础配置检查(Gradle/AndroidManifest)

虽然是新项目,但还是要确认几个关键配置:

  • 网络权限:确保AndroidManifest.xml中已添加网络权限(新RN项目默认会加,但以防被误删):
    <uses-permission android:name="android.permission.INTERNET" />
    
  • Cleartext流量限制:如果你的链接是HTTPS,这条可以忽略;但如果后续测试HTTP链接,需要在AndroidManifest.xml的<application>标签中添加:
    android:usesCleartextTraffic="true"
    
  • Gradle混淆配置:如果开启了代码混淆,是否误拦截了网络请求相关的类?可以暂时关闭混淆测试,看是否恢复正常。

3. Fetch请求的错误处理缺失

你的代码没有处理请求失败的情况,如果真机上请求其实是失败而非缓慢,setStatus(true)永远不会执行,你会误以为是加载慢。建议添加错误捕获,方便排查:

import React, { useState } from 'react';
import { View, Text, ActivityIndicator } from 'react-native';

export default () => {
  const [status, setStatus] = useState(false);
  const [error, setError] = useState(null);

  fetch('https://senhor.app/trilhas/restaurantes.json')
    .then(data => {
      if (!data.ok) throw new Error(`HTTP错误:${data.status}`);
      return data.json();
    })
    .then(() => setStatus(true))
    .catch(err => {
      console.error('请求失败:', err);
      setError(err.message);
    });

  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>Funcional</Text>
      {error && <Text style={{ color: 'red' }}>错误:{error}</Text>}
      {status ? <Text>Carregou</Text> : <ActivityIndicator size="large" color="#00ff00" />}
    </View>
  );
}

通过真机的日志(可以用adb logcat查看),就能知道是超时、证书错误还是其他问题。

4. 替换请求库测试

React Native的Fetch在不同设备上的底层实现可能有差异,你可以尝试用axios或react-native-fs等第三方库替换Fetch,看是否能解决问题,以此排除Fetch本身的兼容性问题。

内容的提问来源于stack exchange,提问作者Antonio Rodrigues

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 05:42:33