antd设置select支持输入和选择功能

这是我封装的一个select代码,直接拿过去就可以用了

import React from 'react'
import { Select } from 'antd';
import { UserOutlined } from '@ant-design/icons';

const { Option } = Select;

export interface SelectProps {
  value: string;
  setSearchOpt: any[];
  onChangeHandl: (value: any) => void;
  onSearch: (value: any) => void;
}

const SelectSearch: React.FC<SelectProps> = (props) => {
  return <>
    <Select
        showSearch // 使用单选模式可搜索
        value={props.value} // 选中当前条目,多选返回数组
        placeholder={''} // select默认展示的说明
        defaultActiveFirstOption={false} // 是否默认高亮第一个选项
        filterOption={false} // 是否根据输入项进行筛选
        onSearch={props.onSearch} // “文本框值”变化时的回调
        onChange={props.onChangeHandl} // 选中option,或input的value回调
        notFoundContent={null} // 当下拉列表为空时,显示的内容
        allowClear // 是否支持清除
        showArrow={true} // 是否显示select的右侧小图标
        suffixIcon={<UserOutlined/>} // 自定义的选择框后缀的图标
      >
        {
          props.setSearchOpt.map((item: any) => {
            return <Option value={item.value}>{item.name}</Option>
          })
        }
        {/* <Option value="1">Not Identified</Option> */}
      </Select>
  </>
}

export default SelectSearch

使用:
注:实际上我项目中我针对表单的Form.item是做了封装的,所以以下示例针对看我博客的朋友能更快速的理解,所以做了简化的示例,如有不到之处,可以指出,我会进行说明修改的。

引入:
	import SelectSearch from '路径'
使用:
  const [value, setValue] = useState('')
  const [searchOpt, setSearchOpt] = useState([])
<Form form={form} name="dynamic_rule">
	<Form.Item
        {...formItemLayout}
        name="username"
        label="Name"
        rules={[
          {
            required: true,
            message: 'Please input your name',
          },
        ]}
      >
        <SelectSearch
        	value={searchVal}
	        setSearchOpt={searchOpt}
	        onChangeHandl={(value: any)=> {
	          setSearchVal(value)
	          form.setFieldsValue({equipmentCode: value})
	        }}
	        onSearch={(value: any) => {
	            setSearchVal(value) // 这个是进行select输入信息后进行回显的
	            form.setFieldsValue({equipmentCode: value}) // 这个是在失去焦点后,select框内的数据就会消失,value就是空,select框无数据,所以这个是通过form设置值的方法来解决这个问题
	        	// setSearchOpt(getSearchOption) 我的功能需求:用户在这里输入信息后,需要调接口进行进行获取Option内容的数据
	        }}
        />
      </Form.Item>
</Form>
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值