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

TypeScript环境下TextInput无法过滤FlatList项 报item.title不存在于never类型错误

报错及功能异常根因

两个问题是关联的,根因有两个:

  • TypeScript类型推断错误:useState初始化传入空数组时,TS会默认推断数组类型为never[],因此会报数组元素不存在对应属性的错误
  • 过滤字段使用错误:你调用的用户接口返回数据不存在title字段,列表实际渲染的是name字段,过滤时用不存在的字段会导致永远匹配不到结果,因此输入内容后列表为空

修复方案

1. 解决TS类型报错

首先定义接口返回的用户数据类型,给useState指定泛型,避免默认推断为never类型:

// 可根据接口实际返回字段补全类型定义
interface User {
  id: number;
  name: string;
}

const ManageCustomersScreen =(props: ManageCustomersScreen) =>{
  // 给state指定泛型
  const [filteredData, setFilteredData] = useState<User[]>([]);
  const [masterData, setMasterData] = useState<User[]>([]);
  // 其余代码不变
}

2. 修复过滤逻辑,解决列表消失问题

把searchFilter函数中使用的不存在的title字段,替换为实际存在的name字段即可:

const searchFilter =(text: string) => {
  if(text){
    const newData = masterData.filter((item) => {
      // 替换为实际渲染的name字段
      const itemData = item.name ? item.name.toUpperCase() : '';
      const textData = text.toUpperCase();
      return itemData.includes(textData);
    });
    setFilteredData(newData);
    setSearch(text);
  } else {
    setFilteredData(masterData);
    setSearch(text);
  }
}

可选优化:将indexOf判断替换为更直观的includes方法,效果一致可读性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:12:04