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

React调用fetch获取笔记列表无输出,已确认请求URL无错误

问题原因
  • 核心原因:已定义的getNotes异步请求函数从未被触发调用。当前useEffect的回调函数为空,组件挂载完成后不会自动发起接口请求,因此没有对应的console输出。
  • 其他潜在诱因:
    1. 代码未做异常捕获,当请求因跨域、后端服务未启动、接口返回错误等问题抛出异常时,无catch逻辑处理异常,会出现无输出甚至静默报错的情况。
    2. Django后端未配置跨域资源共享(CORS)规则,React前端运行端口与Django服务端口不一致时,浏览器会自动拦截跨域请求,导致请求无法正常发出。
解决方案

1. 触发请求函数

在useEffect中调用getNotes,实现组件挂载时自动发起请求:

useEffect(() => {
  getNotes()
}, [])

2. 添加异常捕获逻辑

修改getNotes函数,添加错误捕获代码便于排查问题:

let getNotes = async () => {
  try {
    let response = await fetch('http://127.0.0.1:8000/api/notes/')
    // 校验接口返回状态
    if (!response.ok) {
      throw new Error(`接口请求失败,状态码:${response.status}`)
    }
    let data = await response.json()
    console.log(data)
    setNotes(data)
  } catch (error) {
    console.error('请求异常:', error)
  }
} 

3. 配置Django跨域规则(若存在跨域报错)

  • 安装跨域依赖:pip install django-cors-headers
  • 修改Django项目的settings.py配置:
    • 在INSTALLED_APPS列表中添加corsheaders
    • 在MIDDLEWARE列表最顶部插入corsheaders.middleware.CorsMiddleware
    • 新增配置项:CORS_ORIGIN_ALLOW_ALL = True(开发环境临时使用,生产环境建议替换为指定允许的域名列表)
  • 确认Django服务正常运行在127.0.0.1:8000端口,接口路由配置无误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:15:04