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

React Native+TS开发待办清单时FlatList renderItem报错

报错原因

FlatList的renderItem回调接收的参数是一个包裹对象,单条列表数据存放在该对象的item字段中,不存在名为tarea的字段。你当前代码直接从参数里解构tarea,拿到的值是undefined,访问undefined.titulo就会触发你看到的报错。
你在useEffect里能正常打印titulo,是因为那部分逻辑是直接遍历tareas数组拿到的原始数据项,和FlatList传参的结构不是一回事,所以数据本身没问题,是参数解构写错了。
另外你写的keyExtractor部分逻辑是对的,这个回调的入参直接就是单条数据项,不需要取item字段,不用修改。

修复代码

把自定义renderItem的参数解构改成正确结构即可,两种写法效果完全一致:

// 写法1:解构item字段并重命名为tarea,适配你已有的变量命名
const renderItem = ({item: tarea}: any) => {
  return(
    <>
      <Text>{tarea.titulo}</Text>
      <Text>{tarea.tarea}</Text>
    </>
  )
}

// 写法2:直接使用默认的item字段名
const renderItem = ({item}: any) => {
  return(
    <>
      <Text>{item.titulo}</Text>
      <Text>{item.tarea}</Text>
    </>
  )
}
TypeScript 优化建议(可选)

既然项目用了TypeScript,尽量避免用any跳过类型校验,可以提前定义任务类型,从根源减少这类参数写错的问题:

// 定义任务数据的类型结构
type Tarea = {
  id: string | number;
  titulo: string;
  tarea: string;
}

// 声明状态时指定类型,初始值给空数组可以省去后续判空逻辑
const [tareas, setTareas] = useState<Tarea[]>([]);

给状态设置空数组初始值后,页面渲染部分的tareas &&判断也可以删掉,FlatList接收空数组会正常渲染空状态,不会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:30:46