当前位置:首页 > VUE

vue实现好友列表

2026-02-09 13:24:59VUE

Vue 实现好友列表功能

功能分析 好友列表通常需要展示用户头像、昵称、在线状态等基础信息,支持搜索、分组、最近聊天排序等功能。以下分模块实现核心逻辑。

数据准备 假设好友数据格式如下:

friends: [
  {
    id: 1,
    name: '张三',
    avatar: 'https://example.com/avatar1.jpg',
    group: '同事',
    online: true,
    lastMessage: '2023-08-20T10:00:00'
  },
  // 更多好友数据...
]

基础列表渲染

<template>
  <div class="friend-list">
    <div v-for="friend in filteredFriends" :key="friend.id" class="friend-item">
      <img :src="friend.avatar" class="avatar" />
      <div class="info">
        <span class="name">{{ friend.name }}</span>
        <span class="status" :class="{ online: friend.online }"></span>
      </div>
    </div>
  </div>
</template>

分组展示实现

vue实现好友列表

computed: {
  groupedFriends() {
    return this.friends.reduce((groups, friend) => {
      const group = friend.group || '未分组';
      if (!groups[group]) groups[group] = [];
      groups[group].push(friend);
      return groups;
    }, {});
  }
}

搜索功能实现

data() {
  return {
    searchQuery: ''
  }
},
computed: {
  filteredFriends() {
    const query = this.searchQuery.toLowerCase();
    return this.friends.filter(friend => 
      friend.name.toLowerCase().includes(query)
    );
  }
}

交互增强 添加点击事件和状态标记:

<div 
  v-for="friend in filteredFriends" 
  @click="selectFriend(friend)"
  :class="{ active: selectedFriend?.id === friend.id }">
</div>

样式建议

vue实现好友列表

.friend-item {
  display: flex;
  align-items: center;
  padding: 10px;
  cursor: pointer;
}
.avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  margin-right: 12px;
}
.status {
  display: inline-block;
  width: 8px;
  height: 8px;
  background: #ccc;
  border-radius: 50%;
}
.status.online {
  background: #4CAF50;
}

性能优化 对于大型好友列表:

// 使用虚拟滚动
import { RecycleScroller } from 'vue-virtual-scroller'
components: { RecycleScroller }

完整组件示例

export default {
  data() {
    return {
      friends: [...],
      searchQuery: '',
      selectedFriend: null
    }
  },
  computed: {
    filteredFriends() {
      // 搜索过滤逻辑
    }
  },
  methods: {
    selectFriend(friend) {
      this.selectedFriend = friend
      this.$emit('select', friend)
    }
  }
}

扩展功能建议

  • 添加下拉刷新加载更多好友
  • 实现右键菜单操作(删除、备注等)
  • 集成WebSocket实时更新在线状态
  • 添加好友分组折叠/展开功能

标签: 好友列表vue
分享给朋友:

相关文章

vue 实现在线预览

vue 实现在线预览

Vue 实现在线预览的常见方法 使用 iframe 嵌入 通过 iframe 标签可以嵌入多种类型的文件,如 PDF、图片、网页等。需要确保文件地址可访问。 <template> &…

vue 实现全屏

vue 实现全屏

Vue 实现全屏功能 在 Vue 中实现全屏功能可以通过浏览器提供的 Fullscreen API 完成。以下是一个完整的实现方案: 安装依赖(可选) 如果需要跨浏览器兼容性更好,可以安装…

vue实现selectable

vue实现selectable

Vue 实现可选择的 Select 组件 在 Vue 中实现一个可选择的 Select 组件,可以通过以下几种方式: 使用原生 HTML select 元素 <template> &…

vue实现饼图

vue实现饼图

使用 ECharts 实现 Vue 饼图 安装 ECharts 依赖 npm install echarts --save 在 Vue 组件中引入 ECharts import * as echa…

vue实现项目依赖

vue实现项目依赖

Vue 项目依赖的实现方法 使用 npm 或 yarn 安装依赖 通过 npm 或 yarn 安装项目所需的依赖包。在项目根目录下运行以下命令安装 Vue 及相关库: npm install vue…

前端vue怎么实现

前端vue怎么实现

Vue 前端实现方法 安装 Vue 通过 npm 或 yarn 安装 Vue: npm install vue # 或 yarn add vue 创建 Vue 实例 在 HTML 中引入 Vue 并…