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

React Select选省份筛诊所出现TypeError错误求助

问题分析与解决方案

错误TypeError: termSearch.toLowerCase is not a function的原因是:你在filterSelect函数中直接对传入的termSearch调用toLowerCase(),但termSearch其实是react-select返回的选项对象(类型为SingleValue<OptionType>,结构是{value: string, label: string}),并非字符串,对象没有toLowerCase()方法,导致报错。

修复步骤

1. 修正筛选逻辑,使用选项对象的value属性

修改filterSelect函数,提取选项的value值作为筛选关键词,同时处理“Todos”选项展示所有诊所的需求:

const filterSelect = (termSearch: SingleValue<OptionType>) => {
  // 处理未选择或选择"Todos"的情况,返回所有诊所
  if (!termSearch || termSearch.value === "Todos") {
    setClinicListFilteredSelect(clinicList);
    return;
  }

  const searchTerm = termSearch.value.toLowerCase();
  const resultFilterSelect = clinicList.filter((element) => {
    // 确保province存在后再转小写匹配
    return element.province?.toString().toLowerCase().includes(searchTerm);
  });
  setClinicListFilteredSelect(resultFilterSelect);
};

2. 完善类型定义

给filterSelect的参数加上明确的类型标注,避免类型模糊:

const filterSelect = (termSearch: SingleValue<OptionType>) => { ... }

3. 可选:处理空选择的边界情况

如果允许用户清空选择,当前的handleChangeSelect已经可以兼容null值,无需额外修改:

const handleChangeSelect = (provinceList: SingleValue<OptionType>) =>{
  console.log(provinceList)
  setFilterSelectClinic(provinceList);
  filterSelect(provinceList);
}

完整修正后的核心代码片段

const handleChangeSelect = (provinceList: SingleValue<OptionType>) =>{
  console.log(provinceList)
  setFilterSelectClinic(provinceList);
  filterSelect(provinceList);
}

const filterSelect = (termSearch: SingleValue<OptionType>) => {
  if (!termSearch || termSearch.value === "Todos") {
    setClinicListFilteredSelect(clinicList);
    return;
  }

  const searchTerm = termSearch.value.toLowerCase();
  const resultFilterSelect = clinicList.filter((element) => {
    return element.province?.toString().toLowerCase().includes(searchTerm);
  });
  setClinicListFilteredSelect(resultFilterSelect);
}

这样修改后,就能正确获取选中省份的字符串值进行筛选,同时处理了显示所有诊所的逻辑,避免了类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:54:41