reactjs 如何检测antd select搜索是否成功(在React中)?

jjhzyzn0  于 2023-02-22  发布在  React
关注(0)|答案(1)|浏览(121)

我正在使用antd中的一个可搜索的选择组件,我需要检测搜索是否失败(在这种情况下,我需要添加一个UI按钮)。但是,我似乎在antd文档中找不到任何支持它的东西。
我试过这个:

<Select dropdownAlign={{ offset: [-15, 4] }}
              showSearch
              placeholder="Select a medicine"
              suffixIcon={
                // <HiOutlineArrowDown color="#29BCC1" />
                <img src={arrowdropdown} alt />
              }
              onChange={(e) => handleChange(e, "select", "medicine")}
              onSelect={(e) => setMed(e)}
              filterOption={(input, option) => {
                  if(!(option?.children?.toLowerCase()?.startsWith(input?.toLowerCase()))) {
                    console.log("no result")
                  }
                
                return option?.children?.toLowerCase()?.startsWith(input?.toLowerCase())
              }}
              value={med}
              className="c_select"
            >
              {props.medicine.data?.map((med, index) => (
                <Option value={med.id} key={index}>
                  {med.name}
                </Option>
              ))}
            </Select>

这是可行的,但问题是console.log("no result")记录大约1000次,这是非常低效的。所以,如果有更好的方法来解决这个问题,请指导我。谢谢。
注:我正在使用antd: 4.21.3react: 18.2.0

gblwokeq

gblwokeq1#

好了,我在Select组件中添加了一个onSearch prop,并传入了handleMedicineSearch函数,函数如下:

function handleMedicineSearch(value) {
    const filteredOptions = props.medicine.data?.filter((item) => {
      return item?.name?.toLowerCase()?.startsWith(value?.toLowerCase());
    })

    if(filteredOptions.length === 0) {
      setShowAddBtn(true);
    }

    else {
      setShowAddBtn(false);
    }
  }

该行:
if(filteredOptions.length === 0)
用于检测搜索是否不成功。

相关问题