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 相关文章推荐
JObj预览一个JS的框架
Mar 13 Javascript
ie和firefox不兼容的解决方法集合
Apr 28 Javascript
JavaScript 学习笔记(十二) dom
Jan 21 Javascript
JavaScript面向对象设计二 构造函数模式
Dec 20 Javascript
js Date概念详细介绍
Nov 22 Javascript
使用js画图之圆、弧、扇形
Jan 12 Javascript
jQuery.Validate表单验证插件的使用示例详解
Jan 04 Javascript
jQuery 实时保存页面动态添加的数据的示例
Aug 14 jQuery
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
Nov 14 Javascript
JavaScript 禁止用户保存图片的实现代码
Apr 28 Javascript
js动态添加带圆圈序号列表的实例代码
Feb 18 Javascript
JavaScript架构搭建前端监控如何采集异常数据
Jun 25 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
图解上海144收音机
2021/03/02 无线电
如何给phpadmin一个保护
2006/10/09 PHP
php md5下16位和32位的实现代码
2008/04/09 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
PHP微信分享开发详解
2017/01/14 PHP
jquery获取input的value问题说明
2010/08/19 Javascript
ExtJs事件机制基本代码模型和流程解析
2010/10/24 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
全站最详细的Vuex教程
2018/04/13 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
python标记语句块使用方法总结
2019/08/05 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
python中doctest库实例用法
2020/12/31 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
爱情检讨书大全
2014/01/21 职场文书
大学社团计划书
2014/05/01 职场文书
车辆工程专业求职信
2014/06/14 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
股权转让协议范本
2014/12/07 职场文书
消夏晚会主持词
2015/06/30 职场文书
2016年世界艾滋病日宣传活动总结
2016/04/01 职场文书