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 相关文章推荐
判断iframe里的页面是否加载完成
Jun 06 Javascript
node.js中的path.isAbsolute方法使用说明
Dec 08 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
Mar 15 Javascript
JavaScript中创建字典对象(dictionary)实例
Mar 31 Javascript
jQuery菜单插件superfish使用指南
Apr 21 Javascript
jquery过滤特殊字符',防sql注入的实现方法
Aug 17 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
Apr 26 Javascript
mock.js模拟数据实现前后端分离
Jul 24 Javascript
Vue.js如何使用Socket.IO的示例代码
Sep 05 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
Feb 23 Javascript
ant design vue 表格table 默认勾选几项的操作
Oct 31 Javascript
JavaScript实例 ODO List分析
Jan 22 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 中文和编码判断代码
2010/05/16 PHP
php自动加载的两种实现方法
2010/06/21 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
ext 同步和异步示例代码
2009/09/18 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
JavaScript判断FileUpload控件上传文件类型
2015/09/28 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
js随机生成一个验证码
2017/06/01 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
wxPython窗口中文乱码解决方法
2014/10/11 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
css3 伪元素和伪类选择器详解
2014/09/04 HTML / CSS
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
2014年医学生毕业自我鉴定
2014/03/26 职场文书
护林防火标语
2014/06/27 职场文书
股权转让协议范本
2014/12/07 职场文书
导游词之神仙居景区
2019/11/15 职场文书
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL