search
HomeWeb Front-endFront-end Q&AHow to implement a simple chat list with Vue

With the continuous popularity of social networks and instant messaging, the chat function has also become one of the essential functions of various applications. In the field of front-end development, it is a common practice to use the Vue framework to implement chat lists. This article will introduce how to use Vue to implement a simple chat list.

1. Project construction

First, we need to use the Vue scaffolding tool to build a Vue project. Enter the following code into the command line:

vue create chat-app

This will create a Vue project named "chat-app". Next, we need to install some necessary dependencies, including Vue, Vue Router, Axios and Bootstrap. Enter the following code in the command line:

npm install vue vue-router axios bootstrap

2. Create a route

Create a "router.js" file in the "src" folder in the project root directory. The code is as follows:

import Vue from 'vue';
import VueRouter from 'vue-router';
import ChatList from './components/ChatList.vue';
import ChatRoom from './components/ChatRoom.vue';

Vue.use(VueRouter);

const routes = [
  {
    path: '/',
    name: 'ChatList',
    component: ChatList
  },
  {
    path: '/chat-room/:id',
    name: 'ChatRoom',
    component: ChatRoom,
    props: true
  }
];

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
});

export default router;

Here we have created two routes, one is the chat list page under the "/" path, and the other is the chat room page under the "/chat-room/:id" path. We will explain the implementation of these components one by one below.

3. Create a chat list component

Create a "ChatList.vue" file in the "src/components" folder in the project root directory. The code is as follows:

<template>
  <div>
    <h1 id="聊天列表">聊天列表</h1>
    <ul>
      <li>
        {{ user.name }}
      </li>
    </ul>
  </div>
</template>

<script>
import axios from &#39;axios&#39;;

export default {
  name: &#39;ChatList&#39;,
  data() {
    return {
      users: []
    };
  },
  created() {
    this.getUsers();
  },
  methods: {
    getUsers() {
      axios.get(&#39;https://jsonplaceholder.typicode.com/users&#39;).then(response => {
        this.users = response.data;
      });
    },
    goToChatRoom(id) {
      this.$router.push({ name: &#39;ChatRoom&#39;, params: { id } });
    }
  }
};
</script>

In this component, we use Vue's "v-for" directive to traverse the user list obtained from "https://jsonplaceholder.typicode.com/users" and add it to Rendered to the chat list page. When the user clicks on a list item, we trigger a "goToChatRoom" method, which navigates to the corresponding chat room page.

4. Create a chat room component

Create a "ChatRoom.vue" file in the "src/components" folder in the project root directory. The code is as follows:

<template>
  <div>
    <h1 id="currentChatUser-name">{{ currentChatUser.name }}</h1>
    <ul>
      <li>
        <strong>{{ message.sender }}:</strong> {{ message.content }}
      </li>
    </ul>
    <form>
      <div>
        <input>
      </div>
      <button>发送消息</button>
    </form>
  </div>
</template>

<script>
import axios from &#39;axios&#39;;

export default {
  name: &#39;ChatRoom&#39;,
  props: [&#39;id&#39;],
  data() {
    return {
      currentChatUser: {},
      messages: [],
      newMessage: &#39;&#39;
    };
  },
  created() {
    this.getCurrentChatUser();
    this.getMessages();
  },
  methods: {
    getCurrentChatUser() {
      axios.get(`https://jsonplaceholder.typicode.com/users/${this.id}`).then(response => {
        this.currentChatUser = response.data;
      });
    },
    getMessages() {
      axios.get(`https://jsonplaceholder.typicode.com/posts?userId=${this.id}`).then(response => {
        this.messages = response.data.map(message => {
          return { sender: this.currentChatUser.name, content: message.title };
        });
      });
    },
    sendMessage() {
      this.messages.push({ sender: &#39;我&#39;, content: this.newMessage });
      this.newMessage = &#39;&#39;;
    }
  }
};
</script>

In this component, we obtain the chat objects and message list of the current chat room and render them into the page. We also added a form that allows users to send new messages.

5. Test

Finally, run the following command in the project root directory to start the development server:

npm run serve

Open the browser and visit "http://localhost:8080" , you can see the chat list page we just created!

Click on the list item to start chatting on the new page!

6. Summary

This article introduces how to use the Vue framework to build a simple chat list. We use Axios to get remote data and render it into the page. Although this is just a simple example, it shows how to use routing and components in Vue to implement a personalized chat application. I hope this article can be helpful to Vue beginners.

The above is the detailed content of How to implement a simple chat list with Vue. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
What is useEffect? How do you use it to perform side effects?What is useEffect? How do you use it to perform side effects?Mar 19, 2025 pm 03:58 PM

The article discusses useEffect in React, a hook for managing side effects like data fetching and DOM manipulation in functional components. It explains usage, common side effects, and cleanup to prevent issues like memory leaks.

Explain the concept of lazy loading.Explain the concept of lazy loading.Mar 13, 2025 pm 07:47 PM

Lazy loading delays loading of content until needed, improving web performance and user experience by reducing initial load times and server load.

What are higher-order functions in JavaScript, and how can they be used to write more concise and reusable code?What are higher-order functions in JavaScript, and how can they be used to write more concise and reusable code?Mar 18, 2025 pm 01:44 PM

Higher-order functions in JavaScript enhance code conciseness, reusability, modularity, and performance through abstraction, common patterns, and optimization techniques.

How does currying work in JavaScript, and what are its benefits?How does currying work in JavaScript, and what are its benefits?Mar 18, 2025 pm 01:45 PM

The article discusses currying in JavaScript, a technique transforming multi-argument functions into single-argument function sequences. It explores currying's implementation, benefits like partial application, and practical uses, enhancing code read

How does the React reconciliation algorithm work?How does the React reconciliation algorithm work?Mar 18, 2025 pm 01:58 PM

The article explains React's reconciliation algorithm, which efficiently updates the DOM by comparing Virtual DOM trees. It discusses performance benefits, optimization techniques, and impacts on user experience.Character count: 159

How do you connect React components to the Redux store using connect()?How do you connect React components to the Redux store using connect()?Mar 21, 2025 pm 06:23 PM

Article discusses connecting React components to Redux store using connect(), explaining mapStateToProps, mapDispatchToProps, and performance impacts.

What is useContext? How do you use it to share state between components?What is useContext? How do you use it to share state between components?Mar 19, 2025 pm 03:59 PM

The article explains useContext in React, which simplifies state management by avoiding prop drilling. It discusses benefits like centralized state and performance improvements through reduced re-renders.

How do you prevent default behavior in event handlers?How do you prevent default behavior in event handlers?Mar 19, 2025 pm 04:10 PM

Article discusses preventing default behavior in event handlers using preventDefault() method, its benefits like enhanced user experience, and potential issues like accessibility concerns.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.