概述
ContactListState 是基于状态管理的联系人数据管理 Composable,为 ContactList 组件提供完整的数据管理能力。它支持好友列表、群组列表、黑名单和申请管理等功能。如果自定义组件能力不能支持您的业务,可以使用 ContactListState 实现您的需求。
数据
属性名 | 类型 | 说明 |
friendList | Ref<Friend[]> | 好友列表 |
groupList | Ref<GroupModel[]> | 群组列表 |
blackList | Ref<UserProfile[]> | 黑名单列表 |
friendApplicationUnreadCount | Ref<number> | 未读好友申请数量 |
friendGroupList | Ref<FriendGroup[]> | 好友分组列表 |
friendApplicationList | Ref<FriendApplication[]> | 好友申请列表 |
groupApplicationList | Ref<GroupApplication[]> | 群组申请列表 |
方法
属性名 | 类型 | 说明 |
addFriend | (options: AddFriendParams) => Promise | 添加好友 |
deleteFriend | (options: DeleteFriendParams) => Promise | 删除好友 |
setFriendRemark | (options: FriendRemarkParams) => Promise | 设置好友备注 |
markFriendApplicationAsRead | () => Promise | 标记好友申请为已读 |
acceptFriendApplication | (options: FriendApplicationParams) => Promise | 接受好友申请 |
refuseFriendApplication | (userID: string) => Promise | 拒绝好友申请 |
addToBlacklist | (userIDList: string[]) => Promise | 添加到黑名单 |
removeFromBlacklist | (userIDList: string[]) => Promise | 从黑名单移除 |
createFriendGroup | (options: FriendGroupParams) => Promise | 创建好友分组 |
deleteFriendGroup | (name: string) => Promise | 删除好友分组 |
addToFriendGroup | (options: FriendGroupParams) => Promise | 添加好友到分组 |
removeFromFriendGroup | (options: FriendGroupParams) => Promise | 从分组移除好友 |
renameFriendGroup | (options: RenameFriendGroupParams) => Promise | 重命名好友分组 |
joinGroup | (options: JoinGroupParams) => Promise | 申请加入群组 |
acceptGroupApplication | (options: GroupApplicationParams) => Promise | 接受群组申请 |
refuseGroupApplication | (options: GroupApplicationParams) => Promise | 拒绝群组申请 |
使用示例
<template><div class="contact-manager"><div class="contact-stats"><div class="stat-item"><span class="stat-label">好友数量:</span><span class="stat-value">{{ friendList.length }}</span></div><div class="stat-item"><span class="stat-label">群组数量:</span><span class="stat-value">{{ groupList.length }}</span></div><div class="stat-item"><span class="stat-label">未读申请:</span><span class="stat-value">{{ friendApplicationUnreadCount }}</span></div></div><div class="contact-actions"><button @click="handleAddFriend" class="action-btn">添加好友</button><button @click="handleMarkAsRead" class="action-btn">标记已读</button></div></div></template><script setup lang="ts">import { useContactListState } from '@tencentcloud/chat-uikit-vue3';const {friendList,groupList,blackList,friendApplicationUnreadCount,friendGroupList,friendApplicationList,groupApplicationList,addFriend,deleteFriend,setFriendRemark,markFriendApplicationAsRead,acceptFriendApplication,refuseFriendApplication,addToBlacklist,removeFromBlacklist,createFriendGroup,deleteFriendGroup,addToFriendGroup,removeFromFriendGroup,joinGroup,acceptGroupApplication,refuseGroupApplication,} = useContactListState();const handleAddFriend = async () => {try {await addFriend({userID: 'user123',addSource: 'AddSource_Type_Web',remark: '朋友',wording: '你好',});console.log('好友添加成功');} catch (error) {console.error('添加好友失败:', error);}};const handleMarkAsRead = async () => {try {await markFriendApplicationAsRead();console.log('已标记为已读');} catch (error) {console.error('标记失败:', error);}};</script><style scoped>.contact-manager {padding: 20px;border: 1px solid #e0e0e0;border-radius: 8px;}.contact-stats {display: flex;gap: 20px;margin-bottom: 20px;}.stat-item {display: flex;flex-direction: column;align-items: center;padding: 12px;background-color: #f5f5f5;border-radius: 6px;}.stat-label {font-size: 12px;color: #666;margin-bottom: 4px;}.stat-value {font-size: 18px;font-weight: bold;color: #1890ff;}.contact-actions {display: flex;gap: 12px;}.action-btn {padding: 8px 16px;background-color: #1890ff;color: white;border: none;border-radius: 4px;cursor: pointer;transition: background-color 0.2s;}.action-btn:hover {background-color: #40a9ff;}</style>
效果如图:
