- vừa được xem lúc

Vue.js - Vòng đời của một Vue Instance, Lifecycle Hooks

0 0 31

Người đăng: PHAM HIEU

Theo Viblo Asia

Lời nói đầu:

Chào mọi người, đợt này mình có yêu cầu tìm hiểu về Vue để được tham gia dự án. Nhân tiện mình viết bài viết này dể chia sẻ qua chút kiến thức mà mình tìm hiểu được về Vue. Cụ thể đây về Vue - LifeCycle (vòng đời) của một Instance trong Vue. Mình bắt đầu luôn nhé !!

1. Lifecycle:

Khi tiếp cận bất kỳ framework nào, chúng ta đều cần phải hiểu rõ Lifecycle của chúng, từ lúc khởi tạo ứng dụng, chạy ứng dụng hay kết thúc ứng dụng đấy. Trong Vue cũng vậy, cụ thể dưới đây là sơ đồ vòng đời của một instance trong Vue

Sơ đồ phía trên là vòng đời của một instance. Như chúng ta thấy, Lifecycle của một instance sẽ gồm

  • Khởi tạo một đối tượng Vue
  • Gắn kết vào DOM
  • Cập nhật DOM khi dữ liệu thay đổi
  • Hủy instance.

2. Lifecycle Hooks

Với những giai đoạn trong vòng đời của một instance VueJS kể trên, chúng ta sẽ đi vào tìm hiều về Lifecycle Hooks tương ứng với từng giai đoạn. Vậy Lifecycle Hooks là gì :

  • Lifecycle Hooks là những phương thức được thực thi trong mỗi giai đoạn trong vòng đời của Vue.
  • Với bốn giai đoạn kể trên, lần lượt tương ứng với các hooks: beforeCreate, created, beforeMount, mounted, beforeUpdate, updated, và beforeDestroy, destroyed.

Chúng ta sẽ lần lượt đi vào chi tiết của mỗi hook.

Giai đoạn khởi tạo :

  • beforeCreate hook chạy mỗi khi khởi tạo một instance. Tại thời điểm này, data, event chưa được thiết lập.

  • created hook được chạy khi data, event đã thiết lập thành công.

Đoạn code dưới sẽ miêu tả về hai function hooks này

new Vue({ el: "#app", data: { content: "Lifecycle Hooks", }, beforeCreate () { console.log('before create') console.log(this.content) // khi này this.content trả về undefined vì data chưa được nhận (observe). }, created () { console.log('created') console.log(this.content) // khi này this.content trả về "Lifecycle Hooks" vì quá trình observe data, thiết lập event đã hoàn thành. }
})

Giai đoạn gắt kết DOM:

  • beforeMount hook sẽ chạy sau khi data, event được thiết lập và trước khi gắn kết vào DOM. Trong hook này chúng ta vẫn chưa - truy cập được phần tử trong DOM.

  • mounted hook: giai đoạn này, mounted hook sẽ cho phép chúng ta có thể truy cập vào phẩn tử trong DOM. Tức là khi này, DOM đã được gắn kết.

new Vue({ el: "#app", data: { content: "Lifecycle Hooks", }, beforeMount () { console.log('before mount') console.log(this.$el.textContent) // lỗi vì chưa gắn kết DOM vì vậy chưa thể truy cập đến các thành phần trong DOM ở console.log sẽ hiển thị ra  }, mounted () { console.log('mounted') console.log(this.$el.textContent) // khi này this.$el đã gắn kết với DOM, lúc này có thể truy cập được tới các thành phần trong DOM  }
})

Giai đoạn cập nhật DOM khi dữ liệu thay đổi:

  • beforeUpdate hook : Sau khi đối tượng đã được gắn vào DOM, khi dữ liệu thay đổi, và trước khi render, patch lại và hiển thị ra cho người dùng.
var vm = new Vue({ el: "#app", data: { update: "" }, beforeUpdate() { alert(this.update) },
})

  • updated hook : Chạy ngay sau khi beforeUpdate . Sử dụng khi bạn cần truy cập DOM sau khi thay đổi thuộc tính. dữ liệu ở beforeUpdate và updated là như nhau

Giai đoạn hủy instance:

  • beforeDestroy hook: Là giai đoạn trước khi instance bị hủy. Đây là nơi để quản lý tài nguyên xóa tài nguyên, dọn dẹp các component.
var vm = new Vue({ el: "#app", data: { content: "Lifecycle Hooks" }, beforeDestroy () { this.content = null delete this.content },
})
  • destroyed hook: Thời điểm này , mọi thành phần đã được hủy bỏ hết. Khi console.log() đối tượng này thì sẽ không nhận được thuộc tính hay dữ liệu gì.
var vm = new Vue({ el: "#app", data: { content: "Lifecycle Hooks" }, destroyed () { console.log(this) //thời điểm này sẽ không nhận được gì ở console. },
})

Kết thúc:

Như vậy, qua bài viết này mình đã chia sẻ chút kiến thức mà mình đã tìm hiểu về vòng đời của một Vue Instance. Cảm ơn mọi người đã theo dõi bài viết. Nếu có góp ý về bài viết hãy để lại bình luận bên dưới nhé ! 😄 Nếu giúp ích được cho mọi người một chút nào đấy thì hãy ấn upvote cho mình nhé .

Tài liệu tham khảo:

https://vuejs.org/v2/guide

https://dzone.com/articles/vuejs-series-lifecycle-hooks

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 500

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 374

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 701

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 335

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 421

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 414