React实现快速搜索并且关键字高亮

需求:

点击搜索按钮,弹出模糊匹配列表。
下拉列表选择选项,点击后跳转相应页面关键字所在地。

React实现快速搜索并且关键字高亮_第1张图片

思路:

利用正则从列表匹配到关键词,再使用标签包含关键词,
给标签添加color属性,使用react富文本渲染方式进行渲染

js内容:

 /**
     * 关键字变色
     * @params content 内容
     * @params keyword 关键词
     * @params tagName 标签名
    */
    warpTag(content, keyword, tagName) {
      if (content === "No results") {
        return content
      }
      const a = content.toLowerCase()
      const b = keyword.toLowerCase()

      const indexof = a.indexOf(b)
      const c = indexof > -1 ? content.substr(indexof, keyword.length) : ''
      const val = `<${tagName} style="color:#FF6600;">${c}</${tagName}>`
      const regS = new RegExp(keyword, 'gi')
      console.log('regS',regS,keyword,val)
      console.log('regS222222',content,content.replace(regS, val))
      return content.replace(regS, val)
    }

jsx内容:

<span dangerouslySetInnerHTML={{__html: this.warpTag(item.n, keyword, "span")}}></span>

你可能感兴趣的:(React,react.js,前端,javascript,前端框架)