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

React中如何访问子属性?餐厅评分数据访问问题求助

嘿,别担心!刚学React遇到这种问题太正常啦,咱们一步步来解决~

首先得指出你踩的小坑:你的ratings是一个数组(看数据里的方括号[]),不是单个对象!你直接用restaurant.ratings.stars是取不到值的,因为数组本身没有stars这个属性,得先访问数组里的具体元素才行。

解决方案分两种情况:

1. 如果只需要显示第一个评分

可以用数组索引直接访问第一个元素,同时最好加个判断防止数组为空报错:

<div>
  {restaurant.ratings.length > 0 ? (
    <>
      <p>{restaurant.ratings[0].stars} STAR : </p>
      <p>{restaurant.ratings[0].comment}</p>
    </>
  ) : (
    <p>No ratings yet</p>
  )}
</div>

2. 如果以后会有多个评分,需要全部显示

用React里常用的map方法遍历数组,每个评分单独渲染元素(记得给每个元素加唯一的key,这里用ratingID就很合适):

<div>
  {restaurant.ratings.length > 0 ? (
    restaurant.ratings.map(rating => (
      <div key={rating.ratingID} className="rating-item">
        <p>{rating.stars} STAR : </p>
        <p>{rating.comment}</p>
      </div>
    ))
  ) : (
    <p>No ratings yet</p>
  )}
</div>

为什么之前的写法不对?

JavaScript里,对象用.访问属性(比如restaurant.restaurantName),但数组是有序的集合,得通过索引数字(比如[0]代表第一个元素)或者遍历方法(比如map)来访问里面的内容。你之前直接给数组加.stars,相当于在问“这个数组本身有没有stars属性”,答案当然是没有啦~

可以搜索的关键词

如果想找更多相关资料,试试这些关键词:

  • React 遍历数组渲染元素
  • JavaScript 数组与对象的访问区别
  • React 处理数组类型props

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:56:23