ANTD Select组件实现可选择输入项 react

效果:

当选择框使用关键字搜索,但是没有搜索到想要的项目时,可以回填不存在的项目。

实现逻辑:

监听输入框改变,动态替换下拉列表,如果未匹配到就将value push到下拉列表

关键部分代码:

··· 
 state = {
    filterResult:[],
    fltNoData:[]
  };

···

//当点击清空时,就重置下拉选择内容
  whenClearFltNo=(val)=>{
    if (!val){
      const {fltNoData} = this.state;
      this.setState({
        filterResult:fltNoData
      })
    }
  }

  //根据输入内容过滤,同时如果不存在就补充到可选项
  filterFlight = (value) => {
    const {fltNoData} = this.state;
    let filterResult = [];
    if (value && fltNoData.length > 0) {
      filterResult = fltNoData.filter(item => item.fltNo.indexOf(value) > -1);

      if (filterResult.length==0 && value && value.trim() !== '') {
        filterResult.push({fltNo: value});
      }

    } else {
      filterResult = fltNoData;
    }
    this.setState({
      filterResult
    })
  }
···

<Select
   placeholder="请选择"
   allowClear={true}
   showSearch
   onChange={this.whenClearFltNo}
   onSearch={this.filterFlight}>
   {this.state.filterResult.map(item => (
   <Select.Option key={item.fltNo}>{item.fltNo}</Select.Option> 
   ))} 
</Select>

···

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值