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

React中使用Axios发起GET请求报错:default.get is not a function

问题解决:Axios实例创建错误导致的get is not a function报错

嘿,我一眼就揪出问题根源了——你在api.js里错误地用了axios.get()来创建Axios实例,这才导致调用api.get()时出现TypeError。

错误原因拆解

axios.get()是用来直接发起GET请求的方法,它返回的是一个Promise对象,而不是一个配置好的Axios实例。你把这个Promise赋值给了api变量,自然就找不到.get()方法了,这就是报错的核心原因。

修正步骤

1. 修复api.js代码

把axios.get()替换成axios.create(),这个方法才是用来创建带预设配置的Axios实例的:

import axios from 'axios'; 

// 用axios.create创建配置好的实例
const api = axios.create({ 
  baseURL: 'https://api.covid19api.com', 
}); 

export default api;

2. 关于console.log(apiData)为空的说明

你看到初始的console.log(apiData)输出空数组,是因为组件第一次渲染时,异步请求还没完成,apiData还是你设置的初始值{ elements: [] }。如果想查看请求完成后的状态,可以把console.log放到依赖apiData的useEffect里,或者直接在组件渲染时打印:

useEffect(() => {
  console.log('Updated apiData:', apiData);
}, [apiData]);

可选:给Chart组件加健壮性优化

为了让组件更友好,建议加上加载状态和错误处理:

import React, { useEffect, useState } from 'react'; 
import api from '../../assets/API'; 

export default function Chart() { 
  const [apiData, setDataApi] = useState({ elements: [] });
  const [isLoading, setIsLoading] = useState(true);
  const [fetchError, setFetchError] = useState(null);

  useEffect(() => { 
    const fetchData = async () => { 
      try {
        const result = await api.get('/countries'); 
        setDataApi(result.data); 
      } catch (err) {
        setFetchError(`请求失败:${err.message}`);
      } finally {
        setIsLoading(false);
      }
    }; 
    fetchData(); 
  }, []); 

  if (isLoading) return <h1>数据加载中...</h1>;
  if (fetchError) return <h1 style={{color: 'red'}}>{fetchError}</h1>;

  return( 
    <div>
      <h1>数据加载完成!</h1>
      <pre>{JSON.stringify(apiData, null, 2)}</pre>
    </div>
  ) 
}

内容的提问来源于stack exchange,提问作者Luann Sapucaia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:37:59