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>
THE END
posted @   ZerlinM  阅读(428)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示