vue怎么将字符串的一部分处理为html文档并渲染到页面

这篇文章主要介绍“vue怎么将字符串的一部分处理为html文档并渲染到页面”,在日常操作中,相信很多人在vue怎么将字符串的一部分处理为html文档并渲染到页面问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法

这篇文章主要介绍“vue怎么将字符串的一部分处理为html文档并渲染到页面”,在日常操作中,相信很多人在vue怎么将字符串的一部分处理为html文档并渲染到页面问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue怎么将字符串的一部分处理为html文档并渲染到页面”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

将字符串的一部分处理为html文档并渲染到页面

应用场景

做搜索功能是有搜索建议模块,该模块需要对等于输入搜索框字符串的字符串进行高亮显示,效果图如图所示:

vue怎么将字符串的一部分处理为html文档并渲染到页面

需求概述

将字符串 str = "Hello world hello girls"中的hello添加样式为图所示颜色。

渲染核心组件为

  1.  <van-cell
  2.       v-for="(item, index) in suggestList"
  3.       :key="index"
  4.       icon="search"
  5.       @click="sendResult(item)"
  6.     >
  7.       <div slot="title">{{item}}</div>
  8.  </van-cell>

核心思路 

将str = "Hello world hello girls" 转换为

  1. <span >Hello</span> world <span >hello</span> girls

在 渲染到vue提供的命令v-html内就行了 , 第一种方法核心api为String.replace(),第二种方法核心api为 String.split() 和 Array.join()

第一种方法核心代码

  1. highlight(str) {
  2.       // 正则表达式//中间的字符只是字符串
  3.       // 如果需要动态创建一个正则表达式
  4.       // new RegExp(str, rules) str是正则字符串,rules是匹配模式写在字符串中
  5.       const reg = new RegExp(this.suggestText, 'gi')
  6.       const highStr = str.replace(reg, `<span >${this.suggestText}</span>`)
  7.       return highStr
  8.     },

我自己一开始想到的是vue提供的filters过滤器,发现对v-html内的内容没有用,并且设计过滤器使用时this指向了undefined ,后面就直接用函数包裹了代码如下:

  1. <van-cell
  2.       v-for="(item, index) in suggestList"
  3.       :key="index"
  4.       icon="search"
  5.       @click="sendResult(item)"
  6.     >
  7.       <div slot="title" v-html="highlight(item)"></div>
  8.     </van-cell>

第二种办法的核心代码 

  1. highlight(str) {
  2.       const arr = str.split(this.suggestText)
  3.       const strHtml = arr.join(`<span >${this.suggestText}</span>`)
  4.       return strHtml 
  5.     },

重代码量来讲第二种明显优于第一种方法,但是第二种难以想到用起来也很绕,但效率好代码少推荐常用 

vue和react如何正常渲染一段html字符串

vue怎么将字符串的一部分处理为html文档并渲染到页面

解析data对象中带有标签的des字段

1.react的方法:dangerouslySetInnerHTMl 属性

  1. <div dangerouslySetInnerHTML = {{__html:返回的html代码片段}} ></div>
  2. <div dangerouslySetInnerHTML = {{__html:data.des}} ></div>

原理:

1.dangerouslySetInnerHTMl 是React标签的一个属性,类似于angular的ng-bind;

2.有2个{{}},第一{}代表jsx语法开始,第二个是代表dangerouslySetInnerHTML接收的是一个对象键值对;

3.既可以插入DOM,又可以插入字符串;

2.vue的方法:v-html

  1. <div v-html = "返回的html代码片段" ></div>
  2. <div v-html = "data.des" >{{data.des}}</div>

到此,关于“vue怎么将字符串的一部分处理为html文档并渲染到页面”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注恰卡网网站,小编会继续努力为大家带来更多实用的文章!

本站部分文章来自网络或用户投稿,如无特殊说明或标注,均为本站原创发布。涉及资源下载的,本站旨在共享仅供大家学习与参考,如您想商用请获取官网版权,如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
后端

Vuex中状态管理器怎么使用

2022-6-23 15:19:06

后端

Android开发升级AGP7.0后的适配方法有哪些

2022-6-23 15:19:21

搜索