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

React中axios.get获正确response.data,但response.data._id打印undefined

问题分析与解决

你遇到的核心问题是实际的图书数据嵌套在response.data.data层级里,而非直接在response.data顶层。

从你打印的response.data结构可以看出:

{
  data: {
    _id: '6539fb91dee8e9f4440d9bca', 
    title: 'Scarlet', 
    author: 'JamesHowlatt', 
    publishYear: 2000,
    __v: 0
  }
}

这里的response.data本身是一个外层对象,它的data属性才是包含_id的图书数据对象。直接访问response.data._id自然会得到undefined——因为外层的response.data并没有_id这个键。

修复代码

调整数据的取值路径即可解决问题:

useEffect(() => {
  setLoading(true);
  axios
    .get(`http://localhost:5555/books/${id}`)
    .then((response) => {
      // 取出嵌套在data字段里的实际图书数据
      const bookData = response.data.data;
      setBook(bookData);
      console.log(bookData);
      console.log(bookData._id);
      setLoading(false);
    })
    .catch((error) => {
      console.log(error);
      setLoading(false);
    });
}, [id]);

这类数据嵌套的情况很常见,很多后端框架会默认将业务数据包裹在统一的响应结构中,方便同时返回状态码、提示信息等额外内容,遇到类似问题时,优先检查控制台打印的对象层级结构即可定位问题。

内容的提问来源于stack exchange,提问作者Azizur Rahaman 1063

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 11:52:05