Tạo và Quản lý Instance Vue - Hướng dẫn Cơ bản

Tạo và Quản lý Instance Vue: Hiểu sâu về Data Binding vàLifecycle Hooks

Giới thiệu

Trong quy trình học tập Vue.js, việc tạo và quản lý Vue instance là một phần nền tảng và quan trọng. Vue instance đóng vai trò là trái tim của ứng dụng Vue, kết nối dữ liệu,DOM và các thành phần (component) lại với nhau. Hiểu rõ cách sử dụng Vue instance sẽ giúp bạn làm chủ các特 năng khác của Vue.

Nội dung Chính

1. Tạo Instance Vue Cơ bản

Vue instance được tạo ra thông qua hàm new Vue(). Mỗi instance sẽ quản lý dữ liệu, template và các phần tử DOM liên quan.

Bước tạo instance:

const vm = new Vue({
  el: '#app',
  data: {
    thongDiep: 'Xin chào Vue!'
  }
});

Các thuộc tính quan trọng:

  • el: Chỉ定 phần tử DOM để gắn kết.
  • data: Đối tượng lưu trữ dữ liệu của ứng dụng.
  • phuongThuc: Định nghĩa các phương thức xử lý.
  • tinhToan: Định nghĩa các thuộc tính tính toán.

Các phương thức hữu ích:

  • vm.$data: Truy cập đối tượng dữ liệu.
  • vm.$el: Truy cập phần tử DOM đã gắn kết.

2. Data Binding và Hệ Thống Phản Ứng

Vue sử dụng cú pháp template {{}} để thực hiện data binding. Khi dữ liệu thay đổi, DOM sẽ tự động cập nhật.

Phương thức phản ứng:

  • Binding một chiều: Hiển thị dữ liệu qua {{ thongDiep }}.
  • Binding hai chiều: Sử dụng指令 v-model.
<div id="app">
  <p>{{ thongDiep }}</p>
  <input v-model="thongDiep">
</div>

Phương thức phản ứng trong Vue2 và Vue3:

  • Vue2 sử dụng Object.defineProperty() để tạo hệ thống phản ứng.
  • Vue3 sử dụng Proxy để cải thiện hiệu năng và thêm các chức năng mới.

3.Lifecycle Hooks và Ứng Dụng Thực Tế

Lifecycle hooks là các hàm được gọi vào các giai đoạn khác nhau trong cuộc đời của một Vue instance. Hiểu rõ và sử dụng các hooks này giúp bạn kiểm soát tốt hơn quy trình phát triển ứng dụng.

Lifecycle hooks trong Vue2:

  • beforeCreate: Trước khi khởi tạo instance.
  • created: Sau khi khởi tạo instance.
  • beforeMount: Trước khi gắn kết vào DOM.
  • mounted: Sau khi gắn kết vào DOM.
  • beforeUpdate: Trước khi cập nhật dữ liệu.
  • updated: Sau khi cập nhật dữ liệu.
  • beforeDestroy: Trước khi huỷ instance.
  • destroyed: Sau khi huỷ instance.
<template>
  <div>
    <p>{{ thongDiep }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      thongDiep: 'Xin chào Vue!'
    };
  },
  beforeCreate() {
    console.log('Trước khi khởi tạo');
  },
  created() {
    console.log('Đã khởi tạo');
  },
  mounted() {
    console.log('Đã gắn kết');
  },
  beforeUpdate() {
    console.log('Trước khi cập nhật');
  },
  updated() {
    console.log('Đã cập nhật');
  },
  beforeDestroy() {
    console.log('Trước khi huỷ');
  },
  destroyed() {
    console.log('Đã huỷ');
  }
};
</script>

Lifecycle hooks trong Vue3:

  • onMounted thay thế cho mounted.
  • onUpdated thay thế cho updated.
  • onUnmounted thay thế cho destroyed.
<template>
  <div>
    <p>{{ thongDiep }}</p>
  </div>
</template>

<script>
import { ref, onMounted, onUpdated, onUnmounted } from 'vue';

export default {
  setup() {
    const thongDiep = ref('Xin chào Vue!');
    
    onMounted(() => {
      console.log('Đã gắn kết');
    });
    
    onUpdated(() => {
      console.log('Đã cập nhật');
    });
    
    onUnmounted(() => {
      console.log('Đã huỷ');
    });
    
    return {
      thongDiep
    };
  }
};
</script>

Ứng Dụng vàBEST PRACTICES

  • Phương thứcbinding: Sử dụng binding một chiều khi có thể để giảm tải.
  • Hệ thống phản ứng: Tránh thay đổi DOM trực tiếp, nên dựa vào hệ thống phản ứng của Vue.

Các Vấn Đề Thường Gặp

  • Vấn đề1: Tại sao không truy cập được DOM trong hook mounted?
    Giải pháp: Đảm bảo rằng mã của bạn được thực thi sau khi DOM đã được cập nhật.
  • Vấn đề2: Tại sao lifecycle hooks không được gọi như mong đợi?
    Giải pháp: Kiểm tra lại quy trình gắn kết và huỷ(instance) của component.

Thẻ: vue-instance vue-lifecycle-hooks vue-2-vue-3-differences

Đăng vào ngày 28 tháng 6 lúc 17:04