前几天做一个react的项目的时候需要用一个可搜索的下拉框ComboBox,上代码:

        <ComboBox
// className={comboxClassName}
items={storeArray}
itemToString={item => (item ? item.text : '')}
onInputChange={this.handleEnterpriseSearch}
onChange={this.changeStore}
initialSelectedItem={storeArray.find(o => o.value === deviceStore.storeId)}
selectedItem={storeArray.find(o => o.value === deviceStore.storeId)}
/>

items:加载此下拉框时使用什么集合,下面的查询这个集合的方法:

const res = await api.get(`/device/storeList`);
res.data.forEach((o) => {
let deviceItem = {
"value": o.uid,
"name": o.name,
"text": o.name,
};
storeArray.push(deviceItem);
deviceStore.storeArray = storeArray;
storeArrayAll = storeArray;
});

value是选项的值,text是显示的文字,name是我定义了用来干别的事的,可以忽略,

itemToString:如何显示内容,{item => (item ? item.text : '')}item代表集合中的一项,有点像是java的lambda写法,如果item不是null就使用item的text属性,否则为""
onInputChange:搜索框改变时触发的函数,附代码:
handleEnterpriseSearch = async (v) => {

    if (!v) {
storeArray = storeArrayAll;
return;
}
const val = v;
console.log(val);
let arr = [];
for (let index = 0; index < storeArrayAll.length; index++) {
const element = storeArrayAll[index];
if(element.text.indexOf(val) >= 0){
arr.push(element);
}
}
storeArray = arr; }

从所有的集合元素里比较谁匹配此搜索词,然后操作集合对象

onChange:选项改变时触发的函数,这里就不贴代码了,其实就是把选择的这一条数据传给调用的方法,然后我们保存到一个变量上,更新时从变量取就行了.
initialSelectedItem:默认选择哪一项,

{storeArray.find(o => o.value === deviceStore.storeId)}
从集合对象中遍历,找出value等于某个变量的数据,
 
我遇到的一些问题:
1.默认选中的项第一次加载后,再次呼出这个页面就会变成最开始的哪一项,
问题根源,我加载这个弹窗(这个可搜索下拉框是在一个弹窗里的),是根据一个boolean变量加载的,但是这个变量的加载位置是在这个form上而不是弹窗上,我改成弹窗根据boolean变量加载就好了,每一次关闭再打开就会重新加载初始化,默认选中项也会重新选中
2.显示的位置不能存在内容一样的选项
选择框的显示内容也就是value的值不可以存在相同的情况,这个控件认为选项们应该是各不相同的,我一开始是在名字后面跟上id,大家也可以用别的方法解决,后来项目需求改了店铺名不可以重复我又去掉了

ComboBox可搜索下拉框的使用注意事项,简单记录以及我遇到的一些奇怪的bug的更多相关文章

  1. layui-table-column-select(layui数据表格可搜索下拉框select)

    layuiTableColumnSelect 在layui table的基础上对表格列进行扩展:点击单元格显示可搜索下拉列表. 码云地址:https://gitee.com/yangqianlong9 ...

  2. Combo Select – jQuery可搜索下拉框插件

    今天用到另一款jq插件..插件就是无脑,,引入相关文件,开始撸吧 引入相关文件: <link href="~/Scripts/combo-select/combo.select.css ...

  3. element-ui select可搜索下拉框无法在IOS或Ipad调起小键盘输入法

    参考:https://segmentfault.com/q/1010000021748033 原因:常规select是可以调起小键盘的.但是element-ui的select其实是input.并且这个 ...

  4. WordPress博客插件程序:搜索下拉框openSug

    百度搜索框下拉提示Wordpress组插件. 下载地址:https://www.opensug.org/faq/wp-content/uploads/2018/12/opensug.wordpress ...

  5. jquery 仿百度搜索下拉框的插件

    转载地址:http://www.open-open.com/lib/view/open1420624048437.html 今天写了个下拉插件分享出来 效果: , 可以搜素,也可以使用上下键选择匹配出 ...

  6. z-blog博客组插件openSug.js百度搜索下拉框提示代码

      z-blog安装openSug插件即可获得带有“搜索框提示”功能的搜索框,让z-blog搜索更便捷! https://www.opensug.org/.../opensug_z-blog_v1.0 ...

  7. Discuz论坛搜索下拉框插件openSug

    Discuz!只需安装openSug插件即可获得带有“搜索框提示”功能的搜索框,让您的Discuz搜索更便捷! 下载:https://www.opensug.org/faq/.../opensug.d ...

  8. Vuejs搜索下拉框

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 由于抽签HT For Web ComboBox下拉框组件

    传统HTML5的下拉框select仅仅能实现简单的文字下拉列表,而HT for Web通用组件中ComboBox不仅可以实现传统HTML5下拉框效果,并且可以在文本框和下拉列表中加入自己定义的小图标, ...

随机推荐

  1. HighChart利用servlet导出中文PNG图片乱码问题解决

    最近用到HighChart作图,在图片导出时,出现了图片中中文乱码的问题,在网络上找了很多资料,但都没有解决,最后才发现了最容易被忽略的问题.具体见下. 由于之前有同事使用过HighChart,所以毫 ...

  2. TreeMap----的实现原理(红黑树)

    TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致 ...

  3. 关于实现XX系统设计时所实现的质量属性战术

    可用性: 1)使用Try-catch对抛出的异常进行处理 2)使用Spring事务管理 易用性: 1)在类似删除相关选项时,弹出提示框,防止误操作 2)在不编辑基本信息时,对其进行折叠或者隐藏 3)提 ...

  4. javascript 获取文档/屏幕的Width||Height

    document.body.clientWidth //网页可见区域宽度document.body.clientHeight //网页可见区域高度document.body.offsetWidth / ...

  5. MacOS上好用的软件

    持续补充中…… 记录一些除了MacOS(Sierra)自带工具外,其他好用的软件. 截屏软件 Jietu——在AppStore中查找“Jietu”就可以找到这款软件.这是腾讯出品的一款用于MacOS系 ...

  6. February 10 2017 Week 6 Friday

    Example is always more efficacious than precept. 身教胜于言教. Always match your words with your actions. ...

  7. ZT 段祺瑞终生忏悔枪杀学生?

    段祺瑞终生忏悔枪杀学生?http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece76310528c315c4380146080955468d4e4 ...

  8. 科普文:从人人网看网络科学(Network Science)的X个经典问题

    转:https://zr9558.wordpress.com/2013/12/05/科普文:从人人网看网络科学(network-science)的x个经典问/ 长文,写了N个小时写完的.你肯定能看懂, ...

  9. BZOJ2820:YY的GCD(莫比乌斯反演)

    Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...

  10. git branch 相关操作总结 新建分支 删除分支 切换分支 查看分支

    查看分支 (1) 查看本地分支  git branch 列出本地已经存在的分支,并且在当前分支的前面加*号标记,例如:localhost:website admin$ git branch* bran ...