react中实现搜索结果中关键词高亮显示


Posted in Javascript onJuly 31, 2018

网上看到很多js实现的关键词高亮显示,方法都是一个道理,先获取要替换的文字区域,然后在用正则匹配到关键词,并进行替换。

react中实现起来似乎更简单一些。

我这里的需求是通过搜索框搜索出新闻列表,在已经获取到新闻列表数据中使用filter函数,获取到每一个新闻的title,并定义关键词正则,返回替换后的样式,react不能直接解析带html标签的字符串,方法如下:

render() {
  const newsList=this.state.newsList;
  if(this.props.type==='tag'||this.props.type==='search'){
   let keyword=this.props.id; //这里是父组件传过来的关键词
   newsList.filter((value,index) => { //使用filter函数过滤新闻列表数据
    var re =new RegExp(keyword,"g"); //定义正则
    value.title=value.title.replace(re, `<span class="keyword">${keyword}</span>`); //进行替换,并定义高亮的样式
   })
  }
  
  return (
   <div>
    {newsList.map((value,index) => {
     return (<NewsListItem news={value} key={index} />) //把新闻传递给新闻列表的单个新闻组件
     })
    }
    <div className="btn-more transition" onClick={this.fetchMoreList}>{this.state.loadingText}</div>
   </div>
  );
 }

NewsListItem组件渲染title:

<div className="item-title" dangerouslySetInnerHTML = {{ __html:news.title }}></div>

react中实现搜索结果中关键词高亮显示

react中实现搜索结果中关键词高亮显示

总结

以上所述是小编给大家介绍的react中实现搜索结果中关键词高亮显示,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js兼容标准的表格变色效果
Jun 28 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
js下拉框二级关联菜单效果代码具体实现
Aug 03 Javascript
jquery ready函数、css函数及text()使用示例
Sep 27 Javascript
Jquery 在页面加载后执行的几种方式
Mar 14 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
Jun 18 Javascript
浅谈window对象的scrollBy()方法
Jul 15 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
Jan 22 Javascript
JS实现页面进入和返回定位到具体位置
Dec 08 Javascript
JavaScript实现学生在线做题计时器功能
Dec 05 Javascript
Vue 实现html中根据类型显示内容
Oct 28 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
Nov 10 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
Jul 31 #Javascript
Node.js log4js日志管理详解
Jul 31 #Javascript
jQuery 实现倒计时天,时,分,秒功能
Jul 31 #jQuery
JS实现移动端触屏拖拽功能
Jul 31 #Javascript
JavaScript new对象的四个过程实例浅析
Jul 31 #Javascript
Vue 路由 过渡动效 数据获取方法
Jul 31 #Javascript
JS实现判断图片是否加载完成的方法分析
Jul 31 #Javascript
You might like
PHP版网站缓存加快打开速度的方法分享
2012/06/03 PHP
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
解析php中的escape函数
2013/06/29 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
vue封装第三方插件并发布到npm的方法
2017/09/25 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
Vue封装的可编辑表格插件方法
2018/08/28 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
Vue-router编程式导航的两种实现代码
2021/03/04 Vue.js
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
详解Python如何获取列表(List)的中位数
2016/08/12 Python
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
python argparser的具体使用
2019/11/10 Python
python psutil监控进程实例
2019/12/17 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
英国当代时尚和街头服饰店:18montrose
2018/12/15 全球购物
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
给老婆的道歉信
2015/01/20 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
迁徙的鸟观后感
2015/06/09 职场文书
五年级数学教学反思
2016/02/16 职场文书
【海涛DOTA解说】EVE女子战队独家录像加ZSMJ神牛两连发
2022/04/01 DOTA
python小型的音频操作库mp3Play
2022/04/24 Python