【问题标题】:Why React-Native doesn't show data fetched by Axios?为什么 React-Native 不显示 Axios 获取的数据?
【发布时间】:2021-10-16 07:17:42
【问题描述】:

我已经通过这个命令安装了axios

npm i axios

我写了下面的代码,我认为一切都是正确的,但是 React-Native 没有显示任何数据并抛出任何错误:

import React, {useState, useEffect} from 'react';
import axios from 'axios';

import {
  View,
  Text,
  StyleSheet
} from 'react-native';

const App = () => {
    
    const [data, setData] = useState([]);
    
    useEffect(() => {
        axios.get('http://localhost:8000/posts').then(res => {
            setData(res.data);
        });
    }, []);
    
    return (
        <View style={styles.mainBody}>
            {
                
                data.map(item => (
                    <View>
                        <Text>{item.fields.title}</Text>
                    </View>
                ))
                
            }
        </View>
    );
};
  • 我已经为此测试了 functionalclass-based 组件。

  • 我使用 Postman 获取数据并且工作正常。

  • 我添加了.catch,它显示:Error: Network Error

但它在 React-Native 上不起作用,并且由于没有错误,我无法理解我的问题是什么。任何帮助将不胜感激。

【问题讨论】:

  • 是因为this吗?
  • @Adam 我没有任何错误。
  • 缺少数据是一个错误。请提供详细信息 - 提取是否完成?它甚至一开始就着火了吗?提取是否无限期挂起?它最终会抛出(如果你添加了一个捕获)?
  • @Adam 我应该如何在 React-Native 中首先检查 fetch 是否被触发?
  • 也许链接一个 .catch 来捕获错误并尝试在调用之前添加调试器并跟踪跟踪。

标签: javascript reactjs react-native axios


【解决方案1】:

这是因为您在 URL 中使用了 localhost,使用 react-native 我们不能使用 localhost,而是使用计算机的 IPv4 地址。所以点击你的wifi图标然后点击属性然后寻找IPv4 address类似:193.93.443

所以如果说你的 IPv4 地址是 193.93.443,那么本地 URL 会是这样的:http://193.93.443:8000/posts

【讨论】:

  • 我在 CMD 中通过ipconfig 命令找到了IPv4 地址。我按照你说的添加了,但没有任何改变。
  • 您的手机和电脑需要在同一个 WiFi 连接中。
  • 这是一个模拟器。他们是一样的。我正在将 Django 用于 API。与 Django 无关?
  • 您可以使用 postman 之类的工具测试您的后端,以确定它是否按预期工作。因此,只要它在 Postman 上运行顺利,那么问题肯定出在您的前端。而模拟器,我实际上从未使用过它,我在物理设备上测试我的应用程序。但请确保您没有使用任何代理或使用 VPN。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
  • 2021-05-19
  • 2021-12-05
  • 1970-01-01
  • 2022-01-17
  • 2018-02-13
相关资源
最近更新 更多