antd的AutoComplete

Posted webchen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了antd的AutoComplete相关的知识,希望对你有一定的参考价值。

前言0:

在React工具Create-react-app引用antd时发现antd的样式无效,找了篇博客解决了(http://cnodejs.org/topic/5a31f0bdd92f2f5b185ace61),

注意:先安装Create-react-app,然后照着 方案一,一直到 5.使用react-app-rewire-less配置Less,并安装了antd后,直接npm start即可看到antd的样式了。

前言1:

使用该组件的时候遇到一个报错:Error: Need at least a key or a value or a label (only for OptGroup) for [object Object]antd的AutoComplete

问题出错原因在于dataSource所使用的数组中包含了空元素,如空字符串""、空元素、undefined:

antd的AutoComplete

antd的AutoComplete

解决方法:

1.初始设两个数组,dataSource可为从后台获取的数据,不可更改,arr为前端显示给用户的活数据,即过滤后的数组

 
   
   
 
  1.    this.state={

  2.      dataSource:["aa","ab","bc"],

  3.      arr:[]

  4.    }

2.在handleSearch中去过滤数组,不能将空元素加入arr数组中!

 
   
   
 
  1.    let aa=[]

  2.    function handleSearch(value){

  3.      if(value){

  4.        for(let i=0;i<dataSource.length;i++){

  5.          if(dataSource[i]&&dataSource[i].indexOf(value)>-1){

  6.            aa.push(dataSource[i])

  7.          }

  8.        }

  9.        that.setState({

  10.          arr:aa

  11.        })

  12.      }else{

  13.        that.setState({

  14.          arr:[]

  15.        })

  16.      }

  17.    }

效果图:

结语:

自动完成这个组件,我的逻辑是一开始在state设置两个数据,一个是存储从后台拿来的死数据a,一个是用户在input框输入信息后,过滤的活数据b,每次用户输入信息即从a中过滤拼凑数据成数组赋值给b,清空信息即将b置为空数组。

还有个好办法是过滤由后台去做,当数据量大时,这样能保证前端页面的流畅性。

源码:

https://github.com/AttackXiaoJinJin/ReactTest/blob/master/hello-antd/src/autoFinish.js

最后:

这个组件没有一个属性name,这样在使用表单序列化的时候就无法绑定该组件,我的方法是使用一个hidden的input来做绑定的,但不太好,希望遇到过的人给我一个解决方法~~

(完)

以上是关于antd的AutoComplete的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8 Autocomplete Broken - 仅显示有限的用户代码片段 - 知道为啥吗?

antd input组件及原生input标签取消自动显示历史记录

antd 使用总结问题

ionic 实现类似于JQuery的AutoComplete

在使用antd遇到的不常见问题(一)

[react] Module not found: Can't resolve 'schedule' in 'C:Usersadcaldvmtn7myapp (代码片段