tencent cloud

即时通信 IM

动态与公告
产品动态
公告
产品简介
产品概述
基本概念
应用场景
功能介绍
账号系统
用户资料与关系链
消息管理
群组相关
公众号系统
音视频通话 Call
使用限制
购买指南
计费概述
价格说明
购买指引
续费指引
停服说明
退费说明
开发指引
Demo 专区
开通服务
体验 Demo
快速跑通
下载中心
SDK & Demo 源码
更新日志
聊天互动(含 UI)
TUIKit 组件介绍
快速开始
全功能接入
单功能接入
AI 集成
构建基础界面
更多特性
定义外观
国际化界面语言
推送服务(Push)
服务概述
名词解释
开通服务
快速跑通
厂商通道
数据统计
排查工具
客户端 API
服务端 API
推送回调
高级功能
更新日志
错误码
常见问题
智能客服
功能概述
快速入门
集成指引
管理员操作手册
客服操作手册
更多实践
直播间搭建
AI 聊天机器人方案
超大娱乐协作社群
Discord 实现指南
游戏内集成 Chat 指南
类 WhatsApp Channel 搭建方案
发送红包
Chat 应对防火墙限制相关
无 UI 集成
快速开始
集成 SDK
初始化
登录登出
消息相关
会话相关
群组相关
社群话题
用户管理
离线推送
云端搜索
本地搜索
公众号
客户端 API
JavaScript
Android
iOS & macOS
Swift
Flutter
Electron
Unity
React Native
C 接口
C++
服务端 API
生成 UserSig
REST API
第三方回调
控制台指南
新版控制台介绍
创建并升级应用
基本配置
功能配置
账号管理
群组管理
公众号管理
回调配置
用量统计
资源包查看指南
实时监控
开发辅助工具
访问管理
高级功能
常见问题
uni-app 常见问题
购买相关问题
SDK 相关问题
账号鉴权相关问题
用户资料与关系链相关问题
消息相关问题
群组相关问题
直播群相关问题
昵称头像相关问题
协议与认证
服务等级协议
安全合规认证
IM 政策
隐私政策
数据隐私和安全协议
平滑迁移方案
平滑迁移完整版
平滑迁移简化版
错误码
联系我们

Search

PDF
聚焦模式
字号
最后更新时间: 2026-02-11 17:22:37

组件概述

Search 是一个功能完整的搜索解决方案,包含了搜索框、搜索结果展示、高级搜索等功能的完整组件集合。适用于即时通信、在线会议、在线教育等场景的用户、群组、消息搜索。
说明:
此功能属于增值服务,需要您购买云端搜索插件,请点击 购买


组件架构

Search (主组件)
├── SearchBar # 搜索框组件
├── SearchResults # 搜索结果组件
├── SearchAdvanced # 高级搜索组件
└── SearchResultsItem # 搜索结果项组件
├── User # 用户结果项
├── Group # 群组结果项
├── Message # 消息结果项
└── Conversation # 会话结果项

搜索模式

迷你模式
标准模式
嵌入式模式
适用于侧边栏或小容器
显示有限结果数量
支持展开查看更多
适用于全屏搜索界面
完整功能展示
支持高级搜索
适用于聊天界面
专注消息搜索
优化的布局




Props

属性名
类型
默认值
说明
variant
VariantType
VariantType.MINI
搜索模式:mini(迷你)、standard(标准)、embedded(嵌入式)
SearchBar
React.ComponentType<SearchBarProps>
DefaultSearchBar
自定义搜索框组件
SearchResults
React.ComponentType<SearchResultsProps>
DefaultSearchResults
自定义搜索结果组件
SearchAdvanced
React.ComponentType<SearchAdvancedProps>
DefaultSearchAdvanced
自定义高级搜索组件
SearchResultsPresearch
React.ComponentType
-
搜索前占位符组件
SearchResultsLoading
React.ComponentType
-
加载中占位符组件
SearchResultsEmpty
React.ComponentType
-
空结果占位符组件
SearchResultItem
React.ComponentType<ResultItemProps>
-
自定义搜索结果项组件
debounceTime
number
300
搜索防抖时间(毫秒)
autoFocus
boolean
false
是否自动聚焦搜索框
className
string
-
自定义样式类名
style
React.CSSProperties
-
自定义样式
onKeywordChange
(keyword: string) => void
-
搜索关键词变化回调
onSearchComplete
(results: Map<SearchType, SearchResult>) => void
-
搜索完成回调
onResultItemClick
(data: SearchResultItem, type: SearchType) => void
-
搜索结果点击回调
onError
(error: Error) => void
-
搜索错误回调

基础使用

import { Search, VariantType } from '@tencentcloud/chat-uikit-react';

function App() {
return (
<Search
variant={VariantType.STANDARD}
onResultItemClick={(data, type) => {
console.log('搜索结果点击:', data, type);
}}
/>
);
}

自定义能力

Search 为用户自定义提供了丰富且多维度的 Props 接口,允许用户自定义功能、UI、模块等。
Search 组件提供了多个可替换的子组件,允许用户自定义 SearchBar, SearchResults, SearchAdvanced, SearchResultItem, SearchResultsPresearch, SearchResultsLoading, SearchResultsEmpty, 等。同时,用户还可以利用默认子组件进行二次开发定制。
自定义 SearchBar
自定义 SearchResults
自定义 SearchAdvanced
自定义 SearchResultItem
自定义占位组件
Props
属性名
类型
默认值
说明
data
SearchResultItem
-
搜索结果数据
type
SearchType
-
搜索结果类型
keyword
string
-
搜索关键词
onClick
(data: SearchResultItem, type: SearchType) => void
-
点击回调
className
string
-
自定义样式类名
示例
const CustomSearchBar = ({ value, onChange, onClear, placeholder }) => (
<div className="custom-search-bar">
<input
type="text"
value={value}
onChange={onChange}
placeholder={placeholder}
/>
{value && <button onClick={onClear}>清除</button>}
</div>
);

<Search SearchBar={CustomSearchBar} />
Props
属性名
类型
默认值
说明
results
Map<SearchType, SearchResult>
-
搜索结果数据
isLoading
boolean
-
是否正在加载
error
Error | null
-
错误信息
keyword
string
-
搜索关键词
typeLabels
Record<SearchType, string>
-
搜索类型标签
onLoadMore
(type: SearchType) => void
-
加载更多回调
onResultItemClick
(data: SearchResultItem, type: SearchType) => void
-
结果项点击回调
SearchResultsLoading
React.ComponentType
Loading
自定义加载组件
SearchResultsPresearch
React.ComponentType
-
搜索前占位符组件
SearchResultsEmpty
React.ComponentType
EmptyResult
空结果占位符组件
SearchResultItem
React.ComponentType<ResultItemProps>
DefaultSearchResultsItem
自定义结果项组件
variant
VariantType
VariantType.STANDARD
显示模式
searchType
SearchType | 'all'
'all'
当前搜索类型
示例
const CustomSearchResults = ({ results, keyword, onResultItemClick }) => (
<div className="custom-results">
{Array.from(results.entries()).map(([type, result]) => (
<div key={type}>
<h3>{type}</h3>
{result.resultList.map((item, index) => (
<div key={index} onClick={() => onResultItemClick(item, type)}>
{/* 自定义结果项 */}
</div>
))}
</div>
))}
</div>
);

<Search SearchResults={CustomSearchResults} />
Props
属性名
类型
默认值
说明
variant
VariantType
-
显示模式
searchType
SearchTabType
-
当前搜索类型
advancedParams
Map<SearchType, SearchParamsMap[SearchType]>
-
高级搜索参数
onAdvancedParamsChange
(type: SearchType, params: SearchParamsMap[SearchType]) => void
-
参数变化回调
示例
const CustomSearchAdvanced = ({ variant, searchType, advancedParams, onAdvancedParamsChange }) => (
<div className="custom-advanced">
{/* 自定义高级搜索功能 */}
</div>
);

<Search SearchAdvanced={CustomSearchAdvanced} />
Props
属性名
类型
默认值
说明
data
SearchResultItem
-
搜索结果数据
type
SearchType
-
搜索结果类型
keyword
string
-
搜索关键词
onClick
(data: SearchResultItem, type: SearchType) => void
-
点击回调
className
string
-
自定义样式类名
示例
const CustomSearchItem = ({ data, type, keyword, onClick }) => (
<div className="custom-item">
{type === SearchType.MESSAGE && (
<Conversation
data={data}
keyword={keyword}
onClick={onClick}
/>
)}
{type === SearchType.USER && (
<User
data={data}
keyword={keyword}
onClick={onClick}
/>
)}
{type === SearchType.GROUP && (
<Group
data={data}
keyword={keyword}
onClick={onClick}
/>
)}
{type === SearchType.CHAT_MESSAGE && (
<Message
data={data}
keyword={keyword}
onClick={onClick}
/>
)}
</div>
);

<Search SearchResultItem={CustomSearchItem} />
Props
属性名
类型
默认值
说明
SearchResultsPresearch
React.ComponentType
-
搜索前占位符组件
SearchResultsLoading
React.ComponentType
-
加载中占位符组件
SearchResultsEmpty
React.ComponentType
-
空结果占位符组件
示例
<Search
SearchResultsPresearch={() => <div>输入关键词开始搜索</div>}
SearchResultsLoading={() => <div>搜索中...</div>}
SearchResultsEmpty={() => <div>未找到相关结果</div>}
/>

常见问题

Q: 如何自定义搜索结果的显示格式?

A: 使用 SearchResultItem 属性传入自定义组件。

Q: 如何处理搜索性能问题?

A: 调整 debounceTime,使用 React.memo,考虑结果缓存。

Q: 移动端如何优化?

A: 组件自动适配移动端,也可通过 CSS 进一步定制。

Q: 如何支持多语言?

A: 组件内置国际化支持,通过 useUIKit 获取翻译。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈