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

【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 很大,频繁更新可能影响性能,可以考虑防抖

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

相关文章:

  • MongoDB Shard Cluster
  • 科技赋能建筑新未来:中建海龙模块化建筑产品入选中国建筑首批产业化推广产品
  • Kafka和flume整合
  • HOW - 如何模拟实现 gpt 展示答案的交互效果
  • Python判断语句-语法:if,if else,if elif else,嵌套,if else语句扁平式写法,案例
  • android jatpack Compose 多数据源依赖处理:从状态管理到精准更新的架构设计
  • kafka整合flume与DStream转换
  • #苍穹外卖# day 10-11
  • Move Registry 发布,实现 Sui 的超级互操作性
  • ubuntu22.04部署Snipe-IT
  • MYSQL 常用字符串函数 和 时间函数详解
  • 信息学奥赛一本通 1509:【例 1】Intervals | OpenJudge 百练 1201:Intervals
  • 云服务器centos 安装hadoop集群
  • CS001-7-hbao
  • 海之淀攻略
  • 【视频时刻检索】Text-Video Retrieval via Multi-Modal Hypergraph Networks 论文阅读
  • 驱动开发硬核特训 · Day 21(上篇) 抽象理解 Linux 子系统:内核工程师的视角
  • Spring的xxxAware接口工作原理-笔记
  • 高等数学第三章---微分中值定理与导数的应用(3.1微分中值定理3.2洛必达法则)
  • 如何设置极狐GitLab 议题截止日?
  • 北京朝阳涉住宅组团地块126亿元成交
  • 民调显示特朗普执政百日支持率为80年来美历任总统最低
  • 从“网点适老化”到“社区嵌入式”,“金融为老上海模式”如何探索?
  • 凝聚多方力量,中国农科院油菜产业专家团部署单产提升新任务
  • 商务部:将积极会同相关部门加快推进离境退税政策的落实落地
  • 楼下电瓶车起火老夫妻逃生时被烧伤,消防解析躲火避烟注意事项