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

【React】搜索时高亮被搜索选中的文案

文章目录

    • 代码实现

代码实现

函数封装:

export function highlightKeyword(input: string, keyword: string | undefined) {if (!keyword || !input || !input.includes(keyword)) return input;const startIndex = input.indexOf(keyword);return React.createElement('span', null, [input.substring(0, startIndex),React.createElement('span',{style: {backgroundColor: 'rgba(255, 255, 0, 0.8)',color: 'black',},},keyword,),input.substring(startIndex + keyword.length),]);
}

使用案例:

import React from 'react';
import { Tree } from 'antd';const { DirectoryTree } = Tree;const treeData = [{title: '目录1',key: '1',children: [{ title: '目标目录', key: '1-1' }, // 此节点名称会显示为红色{ title: '子目录2', key: '1-2' },],},{title: '目录2',key: '2',},
];const App = () => {const [searchText, setSearchText] = useState('')return <div><Input placeholder="请输入搜索文案" onChange={(e)=>setSearchText(e.target.value)} /><DirectoryTreetreeData={treeData}titleRender={(nodeData) => {return (<span style={{ color: isMatched ? 'red' : 'inherit' }}>{searchText ? highlightKeyword(nodeData.title, searchText) : nodeData.title}</span>);}}/></div>
};export default App;

相关文章:

  • 算法工程师面试题与参考答案资料(2025年版)
  • C++算法(10):二叉树的高度与深度,(C++代码实战)
  • Java 泛型使用教程
  • Netty前置基础知识之BIO、NIO以及AIO理论详细解析和实战案例
  • 使用PyTorch实现图像增广与模型训练实战
  • RESTful学习笔记(二)---简单网页前后端springboot项目搭建
  • uni-app 状态管理深度解析:Vuex 与全局方案实战指南
  • 【C++软件实战问题排查经验分享】UI界面卡顿 | CPU占用高 | GDI对象泄漏 | 线程堵塞 系列问题排查总结
  • 如何维护技术文档的持续更新?
  • 【Unity笔记】Unity音视频播放监听器封装笔记:VideoPlayer + AudioSource事件触发与编辑器扩展
  • 微软Entra新安全功能引发大规模账户锁定事件
  • GeoAI技术内涵与城市计算
  • 目标检测:视觉系统中的CNN-Transformer融合网络
  • 从代码学习深度学习 - 学习率调度器 PyTorch 版
  • Vue-组件的懒加载,按需加载
  • PyCharm 初级教程:从安装到第一个 Python 项目
  • git远程分支重命名(纯代码操作)
  • 大模型基础
  • 学习深度学习是否要先学习机器学习?工程师的路径选择策略
  • 重构・协同・共生:传统代理渠道数字化融合全链路解决方案
  • 罗马教皇方济各去世
  • 习近平圆满结束对柬埔寨国事访问
  • 中马签署互免签证协定,飞往马来西亚的机票搜索量日环比增长超1倍
  • 马上评丨婚介服务是“甜蜜的事业”,不容乱象滋生
  • 董军与越南国防部长共同主持中越边境国防友好交流活动
  • 【社论】让民营企业在上海大显身手