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

React Native报错:undefined is not an object (evaluating 'prod.title') 原因排查

报错原因分析:undefined is not an object (evaluating 'prod.title')

1. FlatList renderItem 参数解构错误

FlatList 的 renderItem 回调默认接收的是包含 item 和 index 的对象,你直接用 {prod} 解构,相当于尝试从参数对象里取名为 prod 的属性,但这个属性不存在,导致 prod 为 undefined。

正确写法应该是把 item 重命名为 prod:

renderItem={({ item: prod }) => (
  <ProductCard 
    cardType="social"
    title={prod.title}
    imageUrl={prod.imageUrl}
    price={prod.price}
    unit={prod.unit}
    overallRating={prod.overallRating}
    likes={prod.likes}
    userID={route.params.userEmail} 
  />
)}

或者直接使用默认的 item 参数:

renderItem={({ item }) => (
  <ProductCard 
    cardType="social"
    title={item.title}
    imageUrl={item.imageUrl}
    price={item.price}
    unit={item.unit}
    overallRating={item.overallRating}
    likes={item.likes}
    userID={route.params.userEmail} 
  />
)}

2. products 数组存在空元素

即便你定义了 products 变量,数组里可能混入了 undefined、null 或者未正确初始化的元素。比如异步加载数据时,初始的 products 是空数组,或者接口返回的数据有部分元素缺失属性。

可以在渲染前添加空值判断:

renderItem={({ item: prod }) => (
  prod ? (
    <ProductCard 
      cardType="social"
      title={prod.title}
      imageUrl={prod.imageUrl}
      price={prod.price}
      unit={prod.unit}
      overallRating={prod.overallRating}
      likes={prod.likes}
      userID={route.params.userEmail} 
    />
  ) : null
)}

3. products 变量未正确初始化或更新

虽然你声明了 products,但可能它的初始值是 undefined,或者组件渲染时数据还未加载完成(比如从API请求数据),导致第一次渲染时 products 是 undefined 或空数组,FlatList 尝试渲染不存在的元素触发报错。

可以给 products 设置初始空数组:

const [products, setProducts] = useState([]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:06