React 如何实现动态搜索高亮

  • 前言
  • 一、大体流程
  • 二、使用步骤
    • 1.封装用于样式变化的函数
    • 2.使用函数
  • 总结

前言

任务需求


实现类似网易云这样的搜索联想


一、大体流程

拿到用户拿到的Input中的value数据,发送请求获取后端响应回来的数据并展示,
唯一的技术难点就是,如何让用户输入的数据与后端返回的数据,呈现高亮显示

二、使用步骤

1.封装用于样式变化的函数

代码如下):

 /* 样式格式化校验 */
/* @content 初始文字@keyword 高亮文字@color 需要转化的颜色
*/
export const handleHighlightedWords = (content, keyWord, color) => {//1.判断文本中是否包含,因为indexOf对大小写敏感所以都转化成大写const index = content.toLocaleUpperCase().indexOf(keyWord.toLocaleUpperCase());//2.定义正则 全局匹配不区分大小写const Rex = new RegExp(keyWord, "gi");//3.判断并处理if (index !== -1) {return content.replace(Rex, (text) => {return `<font style="color:${color}">${text}</font>`;});} else {return content;}
};

说明:

  1. indexOf 对大小写敏感所以我统一转换成大写再搜索

  2. 因为replace只能替换出现的第一个字符,且还区分大小写所以,需要对replace
    用正则进行增强

  3. 正则一般人不常用的话上手比较懵,其实也就是几个字符
    我这里表达的是匹配用户输入的值,并且开启全局匹配,且不区分大小写

  4. 最后增强replace ,又发现如果直接替换,无论大写小写都会替换成用户输入的值了,有又通过回调方法拿到匹配上的数据做增强

2.使用函数

代码如下):

   <NavLinkkey={item.id}to={"/"}dangerouslySetInnerHTML={{__html: handleHighlightedWords(item.name,inputSearch,"#c20c0c"),}}>

说明:
dangerouslySetInnerHTML使用这种方式往NavLink中插入数据
类似于原生的innerHTML


总结

总的来说就是,拿到输入的数据,先都转换成大写或小写进行比较,如果有,使用正则去匹配字符串中的数据,再对匹配上的内容进行样式增强。

React 如何实现动态搜索(联想搜索)相关推荐

  1. Ajax实现搜索联想 自动补全

    什么是搜索联想?自动补全? .百度是一个很典型的代表.在百度的搜索框中输入相关信息的时候,会有搜索联想以及自动补全. .搜索联想和自动补全:实际上是为了方便用户的使用.让用户的体验更好. .搜索联想: ...

  2. Linux动态库(.so)搜索路径

    众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib.动态库被创建后,一般都复制到这两个目录中.当程序执行时需要某动态库,并且该动 态库还未加载到内存中,则系统会自动到这两个默认搜索路 ...

  3. android mysql 搜索功能_android利用数据库实现搜索联想功能

    [实例简介] android利用数据库实现搜索联想功能.主要实现的效果是和google百度搜索一样,实现联想功能. [实例截图] [核心代码] 4e431bd8-d287-4028-8476-7510 ...

  4. php 实现联想式 搜索,PHP实现搜索联想功能(基于字典树算法)

    搜索联想功能是各大搜索引擎具备的基础功能,如下图所示,这个功能简化了用户的输入行为,并且能够给用户推荐热门的搜索词,下面我们来讲一下如何用php实现搜索联想的功能. 实现原理 搜索联想功能拆解一下由两 ...

  5. javascript搜索框联想搜索_js实现输入框联想搜索

    //模糊查询 functionSearchLike(jsons) {//var timerSerch = null; $(document).on('keyup', '[name=' + jsons. ...

  6. linux定位so快捷方式_Linux动态库(.so)搜索路径 | 学步园

    众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib.动态库被创建后,一般都复制到这两个目录中.当程序执行时需要某动态库, 并且该动 态库还未加载到内存中,则系统会自动到这两个默认搜索 ...

  7. Vue移动端项目——搜索联想建议功能的实现(结合watch属性和使用lodash防抖节流)

    搜索联想建议 1. 基本思路: 当搜索框输入内容的时候,请求加载联想建议的数据 将请求得到的结果绑定到模板中 2. 基本功能 一.将父组件中搜索框输入的内容传给联想建议子组件 二.在子组件中监视搜索框 ...

  8. php 实现联想式 搜索,php实现联想搜索,你会吗?_后端开发

    for和foreach哪个效率更高?为什么?_后端开发 1.作为一名phper,for和foreach循环遍历几乎每天都在使用,那么这两种遍历方式哪一种效率更高呢?2.效率高的原因是什么呢?3.原理分 ...

  9. iOS——UISearchController(地图联想搜索Demo)

    简介 UISearchController是iOS 8 之后推出的一个新的控件, 用于创建搜索条, 及管理搜索事件, 使用这个, 我们可以很容易的创建属于自己的搜索框.搜索框在app开发中是非常常见的 ...

最新文章

  1. 一个有效的OKR是什么样?
  2. Android N在通知栏上实现直接回复消息
  3. 把一个dataset的表放在另一个dataset里面_视频自监督一. STCR: 一个基于数据增强的简单有效正则项 (降低静态信息的影响)...
  4. win10 + GTX1080配置TensorFlow GPU开发环境
  5. 掌门教育微服务体系 Solar | 阿里巴巴 Nacos 企业级落地中篇
  6. 使用类前置声明的好处-结合Qt 4一个主窗口实例讲解
  7. 关系代数的自然连接符号_初中数学知识清单之代数式的认识
  8. 通过document id和content拿到SAP document的binary data
  9. mybatis学习(33):动态sql if
  10. 爬虫教程( 5 ) --- Selenium 与 PhantomJS
  11. 95-10-110-启动-AdminManager
  12. Mysql的日期查询方法
  13. linux系统开启多路径,Linux系统怎么配置多路径
  14. VS2010测试方面的文章
  15. mschart 控件
  16. 中国地图json 文件下载
  17. Dezender下载及使用说明
  18. 微信网页授获取code
  19. 计算机出错英语翻译,计算机各种错误信息翻译
  20. 基于3D关节点的人体动作识别综述(转)

热门文章

  1. 2021年江苏制造业百强企业排行榜:24家苏州企业营收比重达43.66%(附年榜TOP100详单)
  2. SqlServer2012语句之实例之用SQL语句对表中数据进行操作及数据的导入和导出
  3. abs与fabs的区别和用法
  4. 双显卡只用独显好吗_「独显和双显」双显卡电脑怎么设置程序默认使用独显? - seo实验室...
  5. volatile用法详解
  6. 灵隐寺内的一幅对联,写尽了人的一生
  7. 博客之星-参赛博主:墨家巨子@俏如来-来来来,给俏如来扎起。
  8. windows driver - DeviceIoControl 用法
  9. C语言,课程管理系统
  10. 一高校教师“大闹”图书馆,还要告男生“性骚扰”?校方回应