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

首次使用Strapi:React应用仅显示ID无法获取其他数据求助

Strapi数据仅返回ID、其他字段无法在React渲染的排查方案
  • 先核对Strapi返回的JSON结构
    Strapi v4默认将实际业务字段嵌套在attributes中,外层还有data数组包裹,返回结构大致如下:

    {
      "data": [{"id":1,"attributes":{"title":"测试标题","content":"测试内容"}}],
      "meta":{"pagination":{...}}
    }
    

    若你直接写post.title肯定拿不到数据,必须访问post.attributes.title。对照你截图里的返回数据,确认是否存在该嵌套结构。

  • 检查字段级权限配置
    不要只开启内容类型的get/getOne整体权限,需进入Strapi后台→设置→角色与权限→公共角色→对应内容类型的权限→编辑权限,把需要返回的字段(如标题、内容等)逐一勾选,保存后重启Strapi再重新请求。

  • 修正React代码的数据解析逻辑
    很多新手会忽略Strapi的嵌套结构,直接将整个响应存入状态。以下是正确示例:

    // 数据请求部分
    fetch('http://localhost:1337/api/你的内容类型')
      .then(res => res.json())
      .then(res => setItems(res.data)) // 取外层的data数组,而非整个响应对象
    
    // 渲染部分
    {items.map(item => (
      <div key={item.id}>
        <h3>{item.attributes.你的字段名}</h3>
      </div>
    ))}
    

    对照你的React代码,确认是否遗漏了上述嵌套字段的访问逻辑。

  • 再次确认内容发布状态
    即便你声称内容已发布,仍需检查内容条目右上角是否显示「已发布」——草稿状态的内容,即使开了权限也不会返回给公共角色。

  • 排查CORS配置(概率较低但需确认)
    若浏览器控制台有CORS报错,可能导致数据截断,但你能拿到ID的话大概率不是此问题。保险起见,检查Strapi的config/middlewares.js里的cors配置,确保允许你的React域名:

    module.exports = [
      // ...其他中间件
      {
        name: 'strapi::cors',
        config: {
          origin: ['http://localhost:3000'], // 替换为你的React项目地址
          methods: ['GET', 'POST', 'PUT', 'DELETE'],
          credentials: true,
        },
      },
    ];
    

内容的提问来源于stack exchange,提问作者Péter Nagy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:50:20