概述
ConversationPreview 组件用于预览会话列表中的单个会话。它负责显示会话信息、未读数,并提供会话操作功能。
借助该组件,您可以自由地设计和组合出您所期望的 ConversationPreview 布局。此外,您还可以通过 
@select-conversation 事件自定义选中会话时的行为。自定义用法
您可以使用 
ConversationList 的 Preview prop 来自定义会话列表中每个会话的预览项。如果未指定 Preview prop,系统将默认使用 ConversationPreviewUI 组件。<template><div class="custom-preview"><div class="content"><h4>Custom Preview</h4><p>{{ conversation?.getShowName() }}</p></div></div></template><script lang="ts" setup>import type { ConversationModel } from '@tencentcloud/chat-uikit-vue3';interface Props {conversation?: ConversationModel;}const props = withDefaults(defineProps<Props>(), {});</script>
<template><ConversationList :preview="CustomConversationPreview" /></template><script setup lang="ts">import { ConversationList } from '@tencentcloud/chat-uikit-vue3';import CustomConversationPreview from './CustomConversationPreview.vue';</script>
Props
ConversationPreviewProps
参数名  | 类型  | 默认值  | 说明  | 
conversation(Required)  | ConversationModel  | -  | 必选参数,标识当前渲染的会话列表项  | 
isSelected  | boolean  | false  | 控制会话列表项 UI 是否处于选中状态  | 
enableActions  | boolean  | true  | 控制会话操作功能是否显示  | 
actionsConfig  | ConversationActionsConfig  | -  | 用于自定义会话操作配置  | 
highlightMatchString  | string  | -  | 会话列表项 Title 高亮匹配关键词,常用于会话搜索结果高亮  | 
Preview  | Component  | ConversationPreviewUI  | 自定义预览组件  | 
Avatar  | Component  | Avatar  | 渲染会话列表项头像区域  | 
ConversationActions  | Component  | ConversationActions  | 渲染会话列表项会话操作区域  | 
className  | string  | -  | 指定根元素类的 CSS 自定义名称  | 
style  | CSSProperties  | -  | 指定根元素样式的自定义样式  | 
ConversationPreviewUIProps
参数名  | 类型  | 默认值  | 说明  | 
conversation(Required)  | ConversationModel  | -  | 必选参数,标识当前渲染的会话列表项  | 
isSelected  | boolean  | false  | 控制会话列表项 UI 是否处于选中状态  | 
enableActions  | boolean  | true  | 控制会话操作功能是否显示  | 
actionsConfig  | ConversationActionsConfig  | -  | 用于自定义会话操作配置  | 
highlightMatchString  | string  | -  | 会话列表项 Title 高亮匹配关键词  | 
Title  | Component  | ConversationPreviewTitle  | 渲染会话列表项标题区域  | 
LastMessageAbstract  | Component  | ConversationPreviewAbstract  | 渲染会话列表项最新消息摘要区域  | 
LastMessageTimestamp  | Component  | ConversationPreviewTimestamp  | 渲染会话列表项最新消息时间戳区域  | 
Unread  | Component  | ConversationPreviewUnread  | 渲染会话列表项消息未读标识区域  | 
ConversationActions  | Component  | ConversationActions  | 渲染会话列表项会话操作区域  | 
Avatar  | Component  | Avatar  | 渲染会话列表项头像区域  | 
className  | string  | -  | 指定根元素类的 CSS 自定义名称  | 
style  | CSSProperties  | -  | 指定根元素样式的自定义样式  | 
Events
事件名  | 参数  | 说明  | 
select-conversation  | (conversation: ConversationModel)  | 指定在选择对话列表中的对话时接收回调的事件  | 
示例:自定义类 Discord 风格
Discord 是一个流行的聊天应用程序,类似于 Skype 或 Telegram。Discord 中的聊天内容如下图所示:

通过对 
ConversationPreview 布局、功能以及样式的定制,我们可以快速实现类 Discord 效果。<template><div:class="['discord-preview-ui',{'conversationPreview--active': activeConversation?.conversationID === props.conversation.conversationID,}]"@click="handleSelectConversation"><label class="discord-preview-ui__tag">#</label><span class="discord-preview-ui__title">{{ conversation?.getShowName() }}</span></div></template><script lang="ts" setup>import { useConversationListState } from '@tencentcloud/chat-uikit-vue3';import type { ConversationModel } from '@tencentcloud/chat-uikit-vue3';const { setActiveConversation, activeConversation } = useConversationListState();interface Props {conversation: ConversationModel;}const emit = defineEmits<{selectConversation: [conversation: ConversationModel];}>();const props = withDefaults(defineProps<Props>(), {});const handleSelectConversation = () => {setActiveConversation(props.conversation.conversationID);emit('selectConversation', props.conversation);};</script><style scoped>.discord-style-app {background-color: #2f3136;padding: 20px;border-radius: 8px;}.discord-conversation-list {background-color: #2f3136;}.discord-preview-ui {height: 34px;border-radius: 4px;padding: 6px 8px;margin: 1px 8px;display: flex;align-items: center;cursor: pointer;transition: all 0.15s ease;position: relative;}.discord-preview-ui__tag {margin-right: 6px;font-size: 16px;color: #8e9297;font-weight: 600;line-height: 1;}.discord-preview-ui__title {font-size: 16px;color: #8e9297;font-weight: 500;line-height: 1.2;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;flex: 1;}.discord-preview-ui:hover {background-color: #393c43;}.discord-preview-ui:hover .discord-preview-ui__tag,.discord-preview-ui:hover .discord-preview-ui__title {color: #dcddde;}.conversationPreview--active {background-color: #404249 !important;}.conversationPreview--active .discord-preview-ui__tag,.conversationPreview--active .discord-preview-ui__title {color: #ffffff !important;}.discord-preview-ui::before {content: '';position: absolute;left: 0;top: 50%;transform: translateY(-50%);width: 4px;height: 8px;background-color: #ffffff;border-radius: 0 4px 4px 0;opacity: 0;transition: opacity 0.15s ease;}</style>
<template><ConversationList :preview="CustomConversationPreview" /></template><script setup lang="ts">import { ConversationList } from '@tencentcloud/chat-uikit-vue3';import CustomConversationPreview from './CustomConversationPreview.vue';</script>
ConversationListPreview 定制后效果如下:修改前  | 修改后  | 
 ![]()   |  ![]()  | 

