当前位置:首页 > VUE

vue实现通讯录代码

2026-02-09 18:46:05VUE

Vue 实现通讯录代码

通讯录功能通常包括联系人列表展示、搜索、添加/删除联系人等操作。以下是一个基于 Vue 3 的通讯录实现示例,包含核心功能模块和代码片段。

数据结构设计

通讯录的核心是联系人数据,通常用数组存储,每个联系人包含姓名、电话等字段:

const contacts = ref([
  { id: 1, name: '张三', phone: '13800138000' },
  { id: 2, name: '李四', phone: '13900139000' }
]);

列表渲染

使用 v-for 渲染联系人列表,并通过计算属性实现排序(按姓名拼音首字母):

vue实现通讯录代码

<template>
  <div v-for="contact in sortedContacts" :key="contact.id">
    {{ contact.name }} - {{ contact.phone }}
  </div>
</template>

<script setup>
const sortedContacts = computed(() => {
  return [...contacts.value].sort((a, b) => 
    a.name.localeCompare(b.name, 'zh-Hans-CN')
  );
});
</script>

搜索功能

通过计算属性实现实时搜索过滤:

const searchQuery = ref('');
const filteredContacts = computed(() => {
  return sortedContacts.value.filter(contact =>
    contact.name.includes(searchQuery.value) || 
    contact.phone.includes(searchQuery.value)
  );
});

添加联系人

表单绑定实现新增功能:

vue实现通讯录代码

<template>
  <input v-model="newName" placeholder="姓名">
  <input v-model="newPhone" placeholder="电话">
  <button @click="addContact">添加</button>
</template>

<script setup>
const newName = ref('');
const newPhone = ref('');

const addContact = () => {
  contacts.value.push({
    id: Date.now(),
    name: newName.value,
    phone: newPhone.value
  });
  newName.value = '';
  newPhone.value = '';
};
</script>

字母索引栏

实现按字母快速定位(需引入拼音转换库如 pinyin):

// 获取首字母分组
const groupedContacts = computed(() => {
  const groups = {};
  sortedContacts.value.forEach(contact => {
    const letter = pinyin(contact.name[0], { style: 'FIRST_LETTER' })[0][0].toUpperCase();
    groups[letter] = groups[letter] || [];
    groups[letter].push(contact);
  });
  return groups;
});

完整组件示例

整合以上功能的完整组件:

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

    <div v-for="(group, letter) in filteredGroups" :key="letter">
      <h3>{{ letter }}</h3>
      <div v-for="contact in group" :key="contact.id">
        {{ contact.name }} - {{ contact.phone }}
        <button @click="deleteContact(contact.id)">删除</button>
      </div>
    </div>

    <div class="add-form">
      <input v-model="newName" placeholder="姓名">
      <input v-model="newPhone" placeholder="电话">
      <button @click="addContact">添加</button>
    </div>
  </div>
</template>

<script setup>
import { ref, computed } from 'vue';
import pinyin from 'pinyin';

// 数据状态
const contacts = ref(/* 初始数据 */);
const searchQuery = ref('');
const newName = ref('');
const newPhone = ref('');

// 业务逻辑方法
const deleteContact = (id) => {
  contacts.value = contacts.value.filter(c => c.id !== id);
};

// 计算属性
const filteredGroups = computed(() => {
  /* 实现搜索过滤后的分组逻辑 */
});
</script>

进阶优化

  1. 数据持久化:使用 localStorage 保存联系人数据
  2. 性能优化:对长列表使用虚拟滚动(如 vue-virtual-scroller
  3. UI 增强:添加字母快速导航栏、动画过渡效果

以上代码提供了 Vue 实现通讯录的核心功能框架,可根据实际需求扩展更多功能如联系人详情页、编辑功能等。

标签: 通讯录代码
分享给朋友:

相关文章

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…

vue实现代码

vue实现代码

以下是Vue实现常见功能的代码示例,涵盖基础语法、组件通信、状态管理等核心内容: 基础模板语法 <template> <div> <h1>{{ mes…

vue实现登录代码

vue实现登录代码

以下是一个基于 Vue.js 的登录功能实现示例,包含表单验证和异步请求处理: 基础组件结构 <template> <div class="login-container"&g…

vue代码框实现

vue代码框实现

Vue 代码框实现方法 在 Vue 中实现代码框功能通常需要结合语法高亮库或 UI 组件库。以下是几种常见实现方式: 使用第三方库 Prism.js 安装 Prism.js 及相关依赖: npm…

vue长轮询代码实现

vue长轮询代码实现

Vue 长轮询实现方法 长轮询(Long Polling)是一种服务器推送技术,客户端发送请求后,服务器保持连接开放直到有新数据或超时。以下是 Vue 中实现长轮询的代码示例。 基本实现逻辑 定义一…

react如何监控代码错误

react如何监控代码错误

监控 React 代码错误的常用方法 使用 Error Boundaries 捕获组件错误 Error Boundaries 是 React 提供的错误捕获机制,通过定义 componentDidCa…