react项目中使用antd Select实现既可以输入又可以下拉选择

需求

当输入关键词时,远程搜索内容,有返回则下拉展示,无返回也要展示当前输入的关键词(不能失去焦点后输入框就置空了),然后点击查询就会根据输入框中的值查询相关列表信息

代码如下:


const [unitName, setUnitName] = useState();
const [unitNameKey, setUnitNameKey] = useState();


<Form.Item name="unitName" label="单位名称">
  <Select
      className="unitName"
      value={unitName}
      allowClear={true}
      filterOption={false}
      onSearch={val => {
          if (val) setUnitNameKey(val)
          fetchDataList(val) // 调接口搜索的方法
      }}
      onInputKeyDown={(e) => {
          e.key === 'Enter' && e.stopPropagation();
      }}
      showSearch
      style={{
          width: '100%',
      }}
      options={list} // list为搜索后的下拉项列表
      onBlur={(e) => {
          let inputValue = unitNameKey;
          // 当是选中值的时候,就没有e.target.value,所以需要通过原生获取节点的值
          if (!inputValue) {
              inputValue = form.getFieldValue('unitName');
          }
          setUnitName(inputValue)
          // 绑定值到表单上
          form.setFieldsValue({ unitName: inputValue })
      }}
      onChange={(val) => {
          setUnitNameKey()
      }}
  />
</Form.Item>
posted @ 2024-11-22 14:44  ZerlinM  阅读(112)  评论(0编辑  收藏  举报