当前位置:首页 > VUE

vue实现通讯录代码

2026-03-27 03:39:28VUE

vue实现通讯录代码

vue实现通讯录代码

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

项目结构

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传参、自定义事件、计算属性和响应式数据管理。可以根据实际需求进一步扩展功能。

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

相关文章

淘宝css代码制作

淘宝css代码制作

在淘宝店铺装修中,CSS代码用于自定义页面样式,提升视觉体验。以下是关键方法和注意事项: 自定义模块样式 通过淘宝旺铺的“自定义模块”功能,可以插入CSS代码。代码需包裹在<style>…

css网页制作代码

css网页制作代码

以下是一些常用的CSS网页制作代码示例,涵盖布局、样式和交互效果: 基础布局与样式 重置浏览器默认样式 * { margin: 0; padding: 0; box-sizing: b…

js实现轮播代码

js实现轮播代码

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

vue抽奖代码实现

vue抽奖代码实现

Vue 抽奖代码实现 基础抽奖组件结构 使用 Vue 3 的 Composition API 实现抽奖功能,核心包括转盘动画、奖品列表和抽奖逻辑。以下为组件基础结构: <templat…

vue分页代码实现

vue分页代码实现

Vue 分页代码实现 在 Vue 中实现分页功能通常需要结合后端 API 返回的数据和前端的分页组件。以下是一个完整的实现示例,包括分页组件的封装和与后端数据的交互。 分页组件封装 创建一个…

vue联动实现代码

vue联动实现代码

Vue 联动实现代码 Vue 中实现联动效果通常涉及父子组件通信、状态管理或动态数据绑定。以下是几种常见的联动实现方式: 父子组件通信实现联动 通过 props 和 $emit 实现父子组件数据联动…