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

使用Strapi与React构建评分应用时的API及渲染错误求助

解决方案:Strapi v4 与 React 集成的API路径及响应格式问题

问题1:Axios 404错误

你初始用的http://localhost:1337/reviews是Strapi v3的路由格式,当前默认安装的Strapi是v4版本,v4的API路由必须包含/api前缀,所以改为http://localhost:1337/api/reviews是正确的。

问题2:reviews.map is not a function错误

Strapi v4的API响应格式和v3存在差异:

  • v3直接返回数据数组
  • v4返回的是包含data(实际数据数组)和meta(分页等元信息)的对象,结构示例:
{
  "data": [/* 评论数据数组 */],
  "meta": { /* 元信息 */ }
}

你之前直接把整个响应对象赋值给reviews状态,导致reviews是对象而非数组,因此无法调用map方法。

具体代码修改:

  1. 修正API请求路径及POST格式:
// src/api/index.js
import axios from 'axios';
// 改为Strapi v4的正确路径
const url = 'http://localhost:1337/api/reviews';
export const readReviews = () => axios.get(url);
// Strapi v4要求POST请求体包裹在data字段中
export const createReview = (newReview) => axios.post(url, { data: newReview });
  1. 在React组件中正确提取响应数据:
    假设你在App.js中是这样获取数据的,需要修改为提取res.data.data:
// App.js中获取评论的函数
const fetchReviews = async () => {
  try {
    const res = await readReviews();
    // 提取Strapi v4返回的实际数据数组
    setReviews(res.data.data);
  } catch (err) {
    console.error(err);
  }
};

问题根源

你参考的教程基于Strapi v3,而当前Strapi默认版本是v4,两者在API路由规则和响应结构上有较大变更,这是导致你遇到两个问题的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:45:39