当前位置:首页 > VUE

vue怎么实现通讯录

2026-02-09 19:49:52VUE

Vue 实现通讯录的方法

数据准备与组件结构

通讯录通常需要展示联系人列表,并提供搜索、分组等功能。在Vue中,可以通过组件化和响应式数据管理实现。

// 示例数据格式
contacts: [
  { name: '张三', phone: '13800138000', group: '朋友' },
  { name: '李四', phone: '13900139000', group: '同事' }
]

列表渲染与分组

使用v-for渲染联系人列表,结合计算属性实现按首字母分组:

computed: {
  groupedContacts() {
    return this.contacts.reduce((groups, contact) => {
      const firstChar = contact.name.charAt(0).toUpperCase()
      if (!groups[firstChar]) groups[firstChar] = []
      groups[firstChar].push(contact)
      return groups
    }, {})
  }
}

模板部分实现分组展示:

vue怎么实现通讯录

<div v-for="(group, letter) in groupedContacts" :key="letter">
  <h3>{{ letter }}</h3>
  <div v-for="contact in group" :key="contact.phone">
    {{ contact.name }} - {{ contact.phone }}
  </div>
</div>

搜索功能实现

添加搜索框并过滤联系人:

data() {
  return {
    searchQuery: ''
  }
},
computed: {
  filteredContacts() {
    return this.contacts.filter(contact => 
      contact.name.includes(this.searchQuery) || 
      contact.phone.includes(this.searchQuery)
    )
  }
}

字母导航快速定位

右侧字母导航栏实现:

vue怎么实现通讯录

computed: {
  letters() {
    return Object.keys(this.groupedContacts).sort()
  }
},
methods: {
  scrollToLetter(letter) {
    // 滚动到对应字母分组位置
  }
}

完整组件示例

整合后的通讯录组件示例:

<template>
  <div class="address-book">
    <input v-model="searchQuery" placeholder="搜索联系人">

    <div class="letter-index">
      <span v-for="letter in letters" @click="scrollToLetter(letter)">
        {{ letter }}
      </span>
    </div>

    <div v-for="(group, letter) in filteredGroups" :key="letter" :id="`letter-${letter}`">
      <h3>{{ letter }}</h3>
      <div v-for="contact in group" :key="contact.phone" class="contact">
        {{ contact.name }} - {{ contact.phone }}
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      contacts: [...],
      searchQuery: ''
    }
  },
  computed: {
    filteredGroups() {
      // 组合搜索和分组逻辑
    },
    letters() {
      // 获取可用字母
    }
  }
}
</script>

进阶功能建议

  1. 使用Vuex管理全局联系人状态
  2. 添加联系人详情页和编辑功能
  3. 实现本地存储或对接后端API
  4. 添加字母分组吸顶效果
  5. 实现联系人添加/删除功能

性能优化

对于大型联系人列表,建议:

  • 使用虚拟滚动技术
  • 对搜索功能进行防抖处理
  • 考虑分页加载数据

标签: 通讯录vue
分享给朋友:

相关文章

vue穿梭框组件实现

vue穿梭框组件实现

实现基础穿梭框组件 在Vue中实现穿梭框组件,可以使用<el-transfer>(Element UI)或手动实现。以下是手动实现的核心逻辑: <template> &l…

vue实现关键词轮播

vue实现关键词轮播

Vue 实现关键词轮播 基础实现方案 使用 Vue 的 v-for 和 setInterval 实现基础轮播效果: <template> <div class="keyword…

vue实现主页

vue实现主页

Vue 实现主页的基本步骤 创建一个 Vue 主页通常涉及以下几个关键步骤,从项目初始化到页面布局和功能实现。 初始化 Vue 项目 使用 Vue CLI 或 Vite 初始化项目。Vue CLI…

vue实现图集

vue实现图集

Vue 实现图集的方法 在 Vue 中实现图集功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用第三方库(如 vue-image-lightbox) 安装 vue-image-ligh…

vue能实现

vue能实现

Vue.js 是一个流行的前端框架,能够实现多种功能。以下是 Vue 能够实现的主要功能和特性: 响应式数据绑定 Vue 的核心特性之一是响应式数据绑定。通过数据驱动视图,当数据发生变化时,视图会…

vue 实现全屏

vue 实现全屏

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