How to use Vue to implement WeChat address book-like special effects
How to use Vue to implement WeChat address book-like special effects
Introduction:
In today’s era of popular social media, WeChat has become indispensable in many people’s daily lives Few social tools. The address book in WeChat is one of the frequently used functions. Through the address book, we can find the people we want to contact at any time and communicate with them instantly. In this article, we will use the Vue framework to implement WeChat address book-like special effects to provide users with a better user experience.
1. Preparation
Before starting, we need to ensure that Vue and the corresponding development environment have been installed. If it is not installed yet, you can refer to Vue official documentation to install it.
Create a new Vue project. You can use Vue CLI to create it. The command is as follows:
vue create wechat-contacts
Enter the project directory:
cd wechat-contacts
Run the project:
npm run serve
At this time Visit http://localhost:8080 in your browser and you will see a blank page.
2. Build the interface
Create a new component Contacts.vue in the src directory, and edit the following code:
<template> <div> <div class="header"> <input type="text" v-model="keyword" placeholder="搜索联系人"> </div> <div class="contacts-list"> <ul> <li v-for="contact in filteredContacts" :key="contact.id"> <div class="avatar">{{ contact.name[0] }}</div> <div class="info"> <div class="name">{{ contact.name }}</div> <div class="message">{{ contact.message }}</div> </div> <div class="time">{{ contact.time }}</div> </li> </ul> </div> </div> </template> <script> export default { data() { return { keyword: '', contacts: [ { id: 1, name: '张三', message: '你好', time: '12:30' }, { id: 2, name: '李四', message: '在吗', time: '13:45' }, { id: 3, name: '王五', message: '有新的消息', time: '15:20' }, { id: 4, name: '赵六', message: '明天见', time: '17:10' } ] } }, computed: { filteredContacts() { return this.contacts.filter(contact => { return contact.name.toLowerCase().includes(this.keyword.toLowerCase()); }); } } } </script> <style scoped> .header { padding: 10px; background-color: #f5f5f5; } .header input { width: 100%; padding: 5px 10px; border: 1px solid #ccc; border-radius: 4px; } .contacts-list { margin-top: 20px; } .contacts-list ul { list-style-type: none; padding: 0; } .contacts-list li { display: flex; align-items: center; padding: 10px; border-bottom: 1px solid #ccc; } .avatar { width: 40px; height: 40px; background-color: #ccc; border-radius: 50%; text-align: center; line-height: 40px; margin-right: 10px; font-size: 20px; color: #fff; } .info { flex-grow: 1; } .name { font-size: 16px; font-weight: bold; } .message { font-size: 14px; color: #999; } .time { font-size: 14px; color: #999; } </style>
Introduce the Contacts component into App.vue:
<template> <div id="app"> <Contacts/> </div> </template> <script> import Contacts from './components/Contacts.vue'; export default { name: 'App', components: { Contacts } } </script> <style> #app { display: flex; justify-content: center; align-items: center; height: 100vh; } </style>
Run the project and you will see a simple address book interface, including a search box and a contact list.
3. Implement interactive effects
We now need to implement two interactive effects: when clicking on a contact, the contact will be added to the chat session; when searching for a contact, the contact list will be dynamically updated.
Click the contact to add to the chat session
Add a click event in Contacts.vue:<li v-for="contact in filteredContacts" :key="contact.id" @click="addToChat(contact)">
Copy after loginAdd the chatContacts array in data to store the added to Contacts in the chat session:
data() { return { ... chatContacts: [] } }
Copy after loginAdd the addToChat method in methods:
methods: { addToChat(contact) { if (!this.chatContacts.includes(contact)) { this.chatContacts.push(contact); } } }
Copy after loginModify the template and add a part of the chat session:
<div class="header"> <input type="text" v-model="keyword" placeholder="搜索联系人"> </div> ... <div class="chat"> <ul> <li v-for="contact in chatContacts" :key="contact.id"> <div class="avatar">{{ contact.name[0] }}</div> <div class="name">{{ contact.name }}</div> </li> </ul> </div>
Copy after loginSearch Contact Dynamic Update
Add the filteredChatContacts calculated attribute in computed to filter contacts in the chat session based on keywords:computed: { filteredChatContacts() { return this.chatContacts.filter(contact => { return contact.name.toLowerCase().includes(this.keyword.toLowerCase()); }); } }
Copy after login
Modify the template and add a search result Part:
<div class="header"> <input type="text" v-model="keyword" placeholder="搜索联系人"> </div> ... <div class="search-results"> <ul> <li v-for="contact in filteredChatContacts" :key="contact.id"> <div class="avatar">{{ contact.name[0] }}</div> <div class="name">{{ contact.name }}</div> </li> </ul> </div>
At this point, we have completed the implementation of the WeChat address book-like special effects and achieved related interactive effects.
Conclusion:
By using the Vue framework, we can easily achieve various complex interactive effects. This article shows how to use Vue to implement WeChat address book-like special effects and provides relevant code examples. I hope this article will be helpful to you in learning Vue development. Everyone is welcome to practice and explore.
The above is the detailed content of How to use Vue to implement WeChat address book-like special effects. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Using Bootstrap in Vue.js is divided into five steps: Install Bootstrap. Import Bootstrap in main.js. Use the Bootstrap component directly in the template. Optional: Custom style. Optional: Use plug-ins.

You can add a function to the Vue button by binding the button in the HTML template to a method. Define the method and write function logic in the Vue instance.

The watch option in Vue.js allows developers to listen for changes in specific data. When the data changes, watch triggers a callback function to perform update views or other tasks. Its configuration options include immediate, which specifies whether to execute a callback immediately, and deep, which specifies whether to recursively listen to changes to objects or arrays.

Vue multi-page development is a way to build applications using the Vue.js framework, where the application is divided into separate pages: Code Maintenance: Splitting the application into multiple pages can make the code easier to manage and maintain. Modularity: Each page can be used as a separate module for easy reuse and replacement. Simple routing: Navigation between pages can be managed through simple routing configuration. SEO Optimization: Each page has its own URL, which helps SEO.

Vue.js has four methods to return to the previous page: $router.go(-1)$router.back() uses <router-link to="/" component window.history.back(), and the method selection depends on the scene.

There are three ways to refer to JS files in Vue.js: directly specify the path using the <script> tag;; dynamic import using the mounted() lifecycle hook; and importing through the Vuex state management library.

There are three common methods for Vue.js to traverse arrays and objects: the v-for directive is used to traverse each element and render templates; the v-bind directive can be used with v-for to dynamically set attribute values for each element; and the .map method can convert array elements into new arrays.

There are two ways to jump div elements in Vue: use Vue Router and add router-link component. Add the @click event listener and call this.$router.push() method to jump.
