GIỚI THIỆU
CĂN BẢN
NÂNG CAO
VUEJS 2X CĂN BẢN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Tạo hai thành phần có thể tương tác với nhau bằng VueJS 2

Làm thế nào để tạo các thành phần Vue tương tác với nhau qua sự kiện là một phần quan trọng trong việc xây dựng ứng dụng VueJS 2?. Trong bài tập này, mình sẽ tìm hiểu cách thiết lập giao tiếp giữa các thành phần cha và con, cho phép dữ liệu được truyền từ thành phần con lên thành phần cha.

Mình sẽ tạo hai thành phần: một thành phần cha và một thành phần con. Thành phần con sẽ có khả năng gửi dữ liệu lên thành phần cha thông qua sự kiện. Sử dụng props để truyền dữ liệu từ cha sang con và sự kiện để gửi thông tin từ con lên cha.

Hãy xem cách mình thiết lập và kết nối hai thành phần này để tạo một luồng thông tin tương tác từ con đến cha trong VueJS 2.

Tạo các file và cấu trúc thư mục

z5050549587989 f4316c5e8cda69491f9a2aed939b7a49 jpg

Dưới đây là cấu trúc file cho bài tập về việc tạo hai thành phần trong VueJS 2 có khả năng tương tác với nhau: một thành phần cha và một thành phần con. Thành phần con có thể gửi dữ liệu lên thành phần cha thông qua sự kiện.

ChildComponent.vue (Thành phần con)

<template>
  <div>
    <button @click="sendDataToParent">Gửi dữ liệu lên cha</button>
  </div>
</template>

<script>
export default {
  methods: {
    sendDataToParent() {
      this.$emit('send-data', 'Dữ liệu từ thành phần con lên cha');
    }
  }
};
</script>

<style>
h1 {
  font-size: 24px;
  color: #333;
  margin-bottom: 15px;
}

/* Phần hiển thị dữ liệu từ con */
p {
  font-size: 16px;
  color: #666;
  margin-bottom: 20px;
}

/* Phần layout của thành phần cha */
div {
  max-width: 400px;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid #ccc;
  border-radius: 5px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
</style>

ParentComponent.vue (Thành phần cha)

<template>
  <div>
    <h1>Thành phần cha</h1>
    <p>Dữ liệu từ con: {{ dataFromChild }}</p>
    <ChildComponent @send-data="receiveDataFromChild" />
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      dataFromChild: ''
    };
  },
  methods: {
    receiveDataFromChild(data) {
      this.dataFromChild = data;
    }
  }
};
</script>

<style>
button {
  padding: 10px 20px;
  background-color: #4CAF50;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  font-size: 16px;
  transition: background-color 0.3s;
}

button:hover {
  background-color: #45a049;
}
</style>

main.js

import Vue from 'vue';
import ParentComponent from './ParentComponent.vue';

new Vue({
  render: h => h(ParentComponent),
}).$mount('#app');

index.html

<!DOCTYPE html>
<html>
<head>
  <title>Tương tác giữa các thành phần Vue</title>
  <!-- Include VueJS -->
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
  <div id="app">
    <!-- Thành phần cha sẽ được render tại đây -->
  </div>

  <script src="main.js"></script>
</body>
</html>

Trong ví dụ trên, ChildComponent.vue có một nút bấm khi được click sẽ gửi dữ liệu lên thành phần cha thông qua $emit. Thành phần cha (ParentComponent.vue) lắng nghe sự kiện này thông qua @send-data và nhận dữ liệu từ thành phần con để hiển thị.

File main.js chỉ đơn giản là khởi tạo ứng dụng Vue và render ParentComponent trong index.html.

z5050544650447 cea4820500b9586815b9966f76124367 jpgz5050545533872 bd5400034e84b7e56281dabaf17c8224 jpg

Trên đây là cách bạn có thể tạo và kết nối hai thành phần Vue với nhau để tương tác thông qua sự kiện. Thành phần con có khả năng gửi dữ liệu lên thành phần cha thông qua sự kiện, trong khi thành phần cha lắng nghe và nhận dữ liệu từ thành phần con. Qua đó, mình đã thấy cách sử dụng props để truyền dữ liệu từ cha sang con và sử dụng sự kiện $emit để gửi thông tin từ con lên cha.

Việc hiểu cách các thành phần Vue có thể tương tác với nhau thông qua props và events là rất quan trọng khi xây dựng các ứng dụng phức tạp hơn. Hy vọng bài viết này đã giúp bạn hiểu rõ hơn về cách tạo tương tác giữa các thành phần VueJS 2!

test php

Bài giải

-------------------- ######## --------------------

Câu hỏi thường gặp liên quan:

Cùng chuyên mục:

Bài tập VueJS 2: Sử dụng Axios hoặc Fetch API trong VueJS 2

Bài tập VueJS 2: Sử dụng Axios hoặc Fetch API trong VueJS 2

Bài tập VueJS 2: Two-way binding trong VueJS 2

Bài tập VueJS 2: Two-way binding trong VueJS 2

Bài tập VueJS 2: Xử lý sự kiện trong VueJS 2

Bài tập VueJS 2: Xử lý sự kiện trong VueJS 2

Bài tập VueJS 2: Binding dữ liệu trong VueJS 2

Bài tập VueJS 2: Binding dữ liệu trong VueJS 2

Sử dụng directives (v-bind, v-model) để hiển thị và cập nhật dữ liệu bằng VueJS 2

Sử dụng directives (v-bind, v-model) để hiển thị và cập nhật dữ liệu bằng VueJS 2

Tạo nút và xử lý sự kiện khi nút được nhấn trong VueJS 2

Tạo nút và xử lý sự kiện khi nút được nhấn trong VueJS 2

VueJS 2 Components: Tạo và quản lý ToDo List đơn giản

VueJS 2 Components: Tạo và quản lý ToDo List đơn giản

Các quy tắc trong VueJS 2

Các quy tắc trong VueJS 2

Tạo component và binding data trong VueJS 2

Tạo component và binding data trong VueJS 2

Tìm hiểu Scoped CSS trong VueJS 2

Tìm hiểu Scoped CSS trong VueJS 2

Sử dụng forceUpdate trong VueJS 2

Sử dụng forceUpdate trong VueJS 2

Sử dụng v-for trong VueJS 2

Sử dụng v-for trong VueJS 2

10 best practices trong VueJS 2

10 best practices trong VueJS 2

Các tạo Custom Directives trong VueJS 2

Các tạo Custom Directives trong VueJS 2

Sử dụng V-for và V-if trong VueJs 2

Sử dụng V-for và V-if trong VueJs 2

Sử dụng methods trong VueJS 2

Sử dụng methods trong VueJS 2

Khác nhau giữa slot và scoped slots trong VueJS 2

Khác nhau giữa slot và scoped slots trong VueJS 2

Tìm hiểu Slots trong VueJS 2

Tìm hiểu Slots trong VueJS 2

Xử lý Custom Events trong VueJS 2

Xử lý Custom Events trong VueJS 2

Ref và Reactive trong VueJS 2

Ref và Reactive trong VueJS 2

Top