ant design的Select下拉选择器 带搜索功能

在做项目的过程中,可能会遇到 下拉框内容较多,为了方便用户选择加入检索功能。

用法

利用ant design 中的select选择器完成此功能。

首先 要获取下拉选择内容数据,和普通下拉选的数据结构一致,数组对象 键值对。
然后把数据渲染到选择器中,我在项目中 遇到的是数据较多,但是为了防止数据下拉较长,后端返回数据做了类似分页处理,每次返回10条数据,那在获取初始数据时其实就获取了十条数据。
把数据放到一个空数组中,然后渲染到选择器中。

componentDidMount() {
    const { dispatch } = this.props;
    dispatch({
      type: 'project/searchProject',
      payload: { },
      callback: (res) => {
        this.setState({
          data: res.data
        })
      }
    });
  }
const children = [];
data.forEach(d => {
  children.push(<Option key={d.id}>{d.name}</Option>);
})
<Select
   showSearch
   allowClear
   labelInValue
   placeholder="请选择项目"
   optionFilterProp="children"
   onSearch={this.handleSearch}
   onChange={this.handleChange}
   filterOption={(input, option) =>
     option.props.children[0].toLowerCase().indexOf(input.toLowerCase()) >= 0
   }
 >
   {children}
 </Select>

那在触发搜索功能的时候,其实只是搜索了10条内容,那在onSearch中还有去请求其他数据。

handleSearch = value => {
  const { dispatch } = this.props;
   dispatch({
     type: 'project/searchProject',
     payload: {
       q: value
     },
     callback: (res) => {
       this.setState({
         data: res.data
       })
     }
   });
};

如果输错了搜索内容,往回删除修改的时候还需要去请求一次数据,触发了onChange事件。

handleChange = value => {
    const { dispatch } = this.props;
    dispatch({
      type: 'project/searchProject',
      callback: (res) => {
        this.setState({
          data: res.data
        })
      }
    });
  };

现在功能完成了。
效果图如下:
在这里插入图片描述
在这里插入图片描述

Vue2 中 Ant Design 的 `Select` 组件是一个用于下拉选择的组件,它可以提供预设选项让用户直接选择,也可以支持用户输入搜索文本自定义查找选项。为了实现可输入并选择的功能,你需要按照以下步骤配置: 1. 引入所需的库: ```html <script src="https://unpkg.com/@ant-design/icons/lib/index.js"></script> <link rel="stylesheet" href="https://unpkg.com/antd@4/dist/antd.css"> <script src="https://cdn.jsdelivr.net/npm/vue@2"></script> <script src="https://cdn.jsdelivr.net/npm/@ant-design/icons-vue@latest"></script> <script src="https://cdn.jsdelivr.net/npm/@ant-design/pro-components@latest"></script> ``` 2. 安装 `@ant-design/pro-select` 包(如果尚未安装): ```bash npm install @ant-design/pro-select # 或者 yarn add @ant-design/pro-select ``` 3. 在 Vue 组件中使用 Select 组件: ```html <template> <div> <a-pro-select v-model="selectedValue" placeholder="请选择或输入搜索" allow-clear search-placeholder="请输入搜索关键字" option-filter-prop="value" <!-- 自定义过滤属性 --> on-search-change="handleSearchChange" <!-- 输入框变化事件 --> > <a-pro-option v-for="(item, index) in options" :key="index" :value="item.value"> {{ item.label }} </a-pro-option> </a-pro-select> </div> </template> <script> import { ProSelect } from '@ant-design/pro-components'; export default { components: { ProSelect, }, data() { return { selectedValue: '', options: [ // 假设这是你的选项数组 { value: 'option1', label: 'Option 1' }, { value: 'option2', label: 'Option 2' }, // 更多选项... ], }; }, methods: { handleSearchChange(query) { this.options = this.options.filter((item) => item.label.includes(query) ); // 这里可以根据 query 来过滤选项 }, }, }; </script> ``` 在这个例子中,`v-model` 控制选中值,`allow-clear` 允许清空选择,`on-search-change` 触发搜索改变事件,可以根据用户输入实时更新选项。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值