当前位置:首页 > VUE

vue实现通讯录代码

2026-03-27 03:39:28VUE

以下是一个基于Vue.js实现的通讯录代码示例,包含基本功能如联系人列表展示、搜索和添加联系人。

vue实现通讯录代码

项目结构

src/
├── components/
│   ├── ContactList.vue
│   ├── ContactForm.vue
│   └── SearchBar.vue
├── App.vue
└── main.js

核心代码实现

主组件 (App.vue)

<template>
  <div id="app">
    <h1>通讯录</h1>
    <SearchBar @search="handleSearch" />
    <ContactForm @add-contact="addContact" />
    <ContactList :contacts="filteredContacts" @delete-contact="deleteContact" />
  </div>
</template>

<script>
import ContactList from './components/ContactList.vue'
import ContactForm from './components/ContactForm.vue'
import SearchBar from './components/SearchBar.vue'

export default {
  components: { ContactList, ContactForm, SearchBar },
  data() {
    return {
      contacts: [
        { id: 1, name: '张三', phone: '13800138000' },
        { id: 2, name: '李四', phone: '13900139000' }
      ],
      searchQuery: ''
    }
  },
  computed: {
    filteredContacts() {
      return this.contacts.filter(contact =>
        contact.name.toLowerCase().includes(this.searchQuery.toLowerCase()) ||
        contact.phone.includes(this.searchQuery)
      )
    }
  },
  methods: {
    addContact(contact) {
      this.contacts.push({ ...contact, id: Date.now() })
    },
    deleteContact(id) {
      this.contacts = this.contacts.filter(contact => contact.id !== id)
    },
    handleSearch(query) {
      this.searchQuery = query
    }
  }
}
</script>

联系人列表组件 (ContactList.vue)

<template>
  <ul class="contact-list">
    <li v-for="contact in contacts" :key="contact.id">
      <span>{{ contact.name }}</span>
      <span>{{ contact.phone }}</span>
      <button @click="$emit('delete-contact', contact.id)">删除</button>
    </li>
  </ul>
</template>

<script>
export default {
  props: ['contacts']
}
</script>

<style>
.contact-list {
  list-style: none;
  padding: 0;
}
.contact-list li {
  display: flex;
  justify-content: space-between;
  padding: 8px;
  border-bottom: 1px solid #eee;
}
</style>

添加联系人表单 (ContactForm.vue)

<template>
  <form @submit.prevent="handleSubmit">
    <input v-model="name" placeholder="姓名" required />
    <input v-model="phone" placeholder="电话" required />
    <button type="submit">添加联系人</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      name: '',
      phone: ''
    }
  },
  methods: {
    handleSubmit() {
      this.$emit('add-contact', {
        name: this.name,
        phone: this.phone
      })
      this.name = ''
      this.phone = ''
    }
  }
}
</script>

搜索组件 (SearchBar.vue)

<template>
  <input 
    type="text" 
    placeholder="搜索联系人..." 
    @input="$emit('search', $event.target.value)"
  />
</template>

<script>
export default {
  emits: ['search']
}
</script>

功能说明

  1. 数据管理:使用Vue的响应式数据管理联系人列表
  2. 搜索功能:通过计算属性实现实时过滤
  3. 组件通信:使用自定义事件实现组件间通信
  4. 表单验证:通过HTML5的required属性实现基本验证

扩展建议

  1. 添加本地存储功能,使用localStorage持久化数据
  2. 实现联系人编辑功能
  3. 添加分组分类功能
  4. 集成拼音搜索支持

此实现展示了Vue的核心概念:组件化开发、props传参、自定义事件、计算属性和响应式数据管理。可以根据实际需求进一步扩展功能。

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

相关文章

vue实现弹窗代码

vue实现弹窗代码

Vue 弹窗实现方法 方法一:使用组件与v-if控制显示 创建一个独立的弹窗组件(如Modal.vue),通过父组件的v-if或v-show控制显隐: <!-- Modal.vue --&g…

vue实现商品列表代码

vue实现商品列表代码

以下是一个基于Vue.js的商品列表实现示例,包含基础功能如数据渲染、分页和筛选: 基础商品列表渲染 <template> <div class="product-list"&…

vue实现代码插件

vue实现代码插件

Vue 实现代码插件的方法 使用第三方库(如 Prism.js 或 Highlight.js) 安装 Prism.js 或 Highlight.js 库,这些库专门用于代码高亮显示。在 Vue 项目中…

vue代码怎么实现拼音

vue代码怎么实现拼音

实现拼音功能的方法 在Vue中实现拼音功能,可以通过拼音转换库将中文转换为拼音。以下是具体实现步骤: 安装拼音转换库 推荐使用pinyin或v-chinese2pinyin库。通过npm或yarn安…

vue代码抛硬币实现

vue代码抛硬币实现

实现思路 使用Vue.js实现抛硬币功能,可以通过随机生成0或1来模拟硬币的正反面,并通过动画效果增强用户体验。以下是具体实现步骤。 代码实现 创建一个Vue组件,包含一个按钮用于触发抛硬币动作…

vue路由实现代码

vue路由实现代码

Vue 路由实现代码 Vue Router 是 Vue.js 的官方路由库,用于构建单页面应用(SPA)。以下是 Vue Router 的基本实现代码示例: 安装 Vue Router 通过 npm…