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 相关文章推荐
制作jquery遮罩层效果导航菜单代码分享
Dec 25 Javascript
js验证真实姓名与身份证号,手机号的简单实例
Jul 18 Javascript
微信小程序 在线支付功能的实现
Mar 14 Javascript
Angular模版驱动表单的使用总结
May 05 Javascript
详解ES6中的Map与Set集合
Mar 22 Javascript
微信小程序如何再次获取用户授权的方法
May 10 Javascript
jQuery实现高级检索功能
May 28 jQuery
vue实现固定位置显示功能
May 30 Javascript
js事件触发操作实例分析
Jun 21 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
Sep 24 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
Mar 02 Javascript
js实现简单图片拖拽效果
Feb 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 mysql数据库操作分页类
2008/06/04 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
怎么用javascript进行拖拽
2006/07/20 Javascript
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
javascript 年月日联动实现核心代码
2009/12/21 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
2017/05/25 jQuery
package.json配置文件构成详解
2019/08/27 Javascript
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python里大整数相乘相关技巧指南
2014/09/12 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
解决python运行效率不高的问题
2020/07/20 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
总监职责范文
2013/11/09 职场文书
酒店前台接待岗位职责
2013/12/03 职场文书
怎么写自荐书范文
2014/02/12 职场文书
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL