当前位置: 首页 > java >正文

【uniapp】vue2 搜索文字高亮显示

【uniapp】vue2 搜索文字高亮显示

我这里是把方法放在公共组件中使用

props: {// 帖子listpostList: {type: Array,required: true},// 搜索文本字体高亮highLightSearch: {type: String,required: false}
},
watch: {// 监听 props 的变化postList: {immediate: true,handler(newVal) {// 变化后的新值, 当前的高亮搜索词this.updateHighlightedPostList(newVal, this.highLightSearch);},},
},
methods: {updateHighlightedPostList(postList, searchKeyword) {// 检查是否有搜索关键字if (!searchKeyword) {this.highlightedPostList = [...postList]return}// 创建正则表达式匹配关键字(g 全局匹配,i 不区分大小写)const regex = new RegExp(`(${searchKeyword})`, "gi");// 更新高亮内容this.highlightedPostList = postList.map((item) => ({...item,title: item.title.replace(regex,`<text class="hight_blue">$1</text>` // 将匹配到的内容 ($1) 包裹在 <text> 标签中),}));},
}
<view v-for="p in highlightedPostList" :key="p.id"><!-- 页面文字展示一定要用 v-html 便于解析标签样式 --><view v-html="p.title" class=""></view>
</view>

高亮实现方式是用 HTML 标签包裹匹配文本,通过 CSS 控制样式 

注意事项:

        使用 v-html 显示 title 时要小心 XSS 攻击,确保 searchKeyword 是可信的

        如果 postList 很大,频繁更新可能影响性能,可以考虑防抖

        正则表达式中的特殊字符可能需要转义

http://www.xdnf.cn/news/1933.html

相关文章:

  • 【Java】BitSet简介
  • 10.ArkUI Grid的介绍和使用
  • HTML 地理定位(Geolocation)教程
  • 从 “制造” 到 “品牌”:官网建设助力中国企业突围东南亚
  • python打印颜色(python颜色、python print颜色、python打印彩色文字、python print彩色、python彩色文字)
  • ECharts 地图开发入门
  • 【华为HCIP | 华为数通工程师】821—多选解析—第十七页
  • 缓存与数据库一致性深度解析与解决方案
  • 铃木一郎女儿是奥运会选手吗·棒球1号位
  • 【Pandas】pandas DataFrame rsub
  • opencv--通道,彩色和灰度
  • Appium自动化开发环境搭建
  • CT三视图显示及插值切片显示-全网独家(复制即用)
  • react和vue的区别之一
  • 常见的6种外挂获取执行时机方法介绍
  • OpenAI 推出「轻量级」Deep Research,免费用户同享
  • Python 基础语法与数据类型(四) - 布尔类型 (bool) 与逻辑运算符 (and, or, not) 和类型转换
  • ctfshow web入门 命令执行(29-77)
  • 智能分析网关摄像机实时接入分析平台,如何开启周界防护智能新时代?
  • 中小企业固定资产管理挑战与数字化破局之道
  • 轻量化AIGC边缘部署实战:在移动端实现实时AI内容生成
  • 身份与访问管理(IAM):零信任架构下的认证授权技术与实战
  • 终端运行java出现???
  • vite+vue2+elementui构建之 vite.config.js
  • 今日行情明日机会——20250425
  • 如何优化字符串替换:四种实现方案对比与性能分析
  • 自学新标日第二十二课(复习)
  • ViewPager FragmentPagerAdapter在系统杀死应用后重建时UI不刷新的问题
  • Hadoop生态圈框架部署 - Windows上部署Hadoop
  • MySQL锁