Hiểu Móc Vòng đời Vue.js

Giới thiệu

LifeCycle Hook là một cửa sổ về cách thư viện bạn đang sử dụng tác phẩm đằng sau các cảnh. Móc vòng đời cho phép bạn biết khi nào thành phần của bạn được tạo, hãy thêm vào DOM, được cập nhật hoặc bị phá hủy.

Nội dung chính Show
  • Giới thiệu
  • Điều kiện tiên quyết
  • Hiểu móc tạo (khởi tạo)
  • beforecreate.
  • {{bất động sản}}
  • dữ liệu() {
  • trước khi cập nhật.
  • cập nhật
  • cập nhật
  • Phần kết luận
  • Video liên quan

Bài viết này sẽ giới thiệu cho bạn việc tạo, gắn kết, cập nhật và những móc phá hủy trong VUE.JS.

Điều kiện tiên quyết

Đoạn trích này sẽ lưu trữ đầu tiên

  • Quen thuộc với vue.js. Đọc cách phát triển các trang web với dòng VUE.JS để tìm hiểu thêm.

Hiểu móc tạo (khởi tạo)

Đoạn trích này sẽ lưu trữ đầu tiên exampleNeakyProperty

Sử dụng hook tạo nếu bạn cần thiết lập mọi thứ trong thành phần của mình, cả trong khi kết xuất máy khách và kết xuất máy chủ.

Đoạn trích này sẽ lưu trữ đầu tiên exampleNeakyProperty . Khi

beforecreate.

the beforecreate hook chạy ở việc khởi tạo thành phần của bạn - Dữ liệu chưa được thực hiện phản ứng và Sự kiện chưa được thiết lập: Phá hủy () {data has not been made reactive, and events have not been set up yet:

ExampleComponent.vue

beforecreate () { Console.log ('Tại thời điểm này, các sự kiện và vòng đời đã được khởi tạo.') Không Không và sau đó exampleNeakyProperty bị xóa. Khi bạn đạt đến bị phá hủy , thực tế không còn gì trên thành phần của bạn. Tất cả mọi thứ được đính kèm với nó đã bị phá hủy. sử dụng đã bị phá hủy Nếu bạn cần thực hiện bất kỳ hoạt động dọn dẹp vào phút cuối hoặc thông báo cho một máy chủ từ xa rằng thành phần đã bị phá hủy: sử dụng đã bị phá hủy Nếu bạn cần thực hiện bất kỳ hoạt động dọn dẹp vào phút cuối hoặc thông báo cho một máy chủ từ xa rằng thành phần đã bị phá hủy: Phá hủy () { Console.log (`Tại thời điểm này, người theo dõi, linh kiện trẻ em và người nghe sự kiện đã bị rách xuống. ')

Trong ví dụ này, khi beforecreate hook được chạy, đoạn trích này sẽ đăng nhập tin nhắn:

Đầu ra.At this point, events and lifecycle have been initialized.

tạo

the đã tạo hook chạy trước các mẫu và Virtual DOM đã được gắn hoặc hiển thị - bạn có thể truy cập phản ứng < AI = 3> Dữ liệu và Sự kiện đang hoạt động: created hook runs before the templates and Virtual DOM have been mounted or rendered - you are able to access reactive data and events that are active:

ExampleComponent.vue

đã tạo () { Console.log ('Tại thời điểm này, this.property hiện đang phản ứng và tài sản sẽ cập nhật.') This.property = 'Ví dụ tài sản được cập nhật.' Không Không sử dụng đã bị phá hủy Nếu bạn cần thực hiện bất kỳ hoạt động dọn dẹp vào phút cuối hoặc thông báo cho một máy chủ từ xa rằng thành phần đã bị phá hủy: Phá hủy () { Console.log (`Tại thời điểm này, người theo dõi, linh kiện trẻ em và người nghe sự kiện đã bị rách xuống. ') Console.log (này) Exampleanalyeanalyticsservice.informservice ('Thành phần bị phá hủy.') Không Không Đầu tiên, đoạn trích này sẽ nhập examPleAnalyeanalyericsService . Khi

Trong ví dụ này, đoạn mã sẽ lưu trữ thuộc tính là Ví dụ Thuộc tính . Khi đã tạo hook được chạy, nó sẽ đăng nhập tin nhắn: property as Example property. When the created hook is run, it will log a message:

Đầu ra.At this point, this.property is now reactive and propertyComputed will update.

tạo beforecreate () {Example property updated.

the đã tạo hook chạy trước các mẫu và Virtual DOM đã được gắn hoặc hiển thị - bạn có thể truy cập phản ứng < AI = 3> Dữ liệu và Sự kiện đang hoạt động: {{ propertyComputed }} will appear as Example property updated instead of Example property.

{{bất động sản}}

Móc treo thường là những cái móc được sử dụng nhiều nhất. Họ cho phép bạn truy cập vào thành phần của mình ngay trước và sau khi kết xuất đầu tiên. Tuy nhiên, họ không chạy trong quá trình kết xuất phía máy chủ.

Sử dụng móc gắn nếu bạn cần truy cập hoặc sửa đổi DOM của thành phần của mình ngay trước hoặc sau khi kết xuất ban đầu.

.

Xuất mặc định { Use created (or created and activated for keep-alive components) for this instead. Especially if you need that data during server-side rendering.

dữ liệu() {

trở lại { beforemount Móc chạy ngay trước khi kết xuất ban đầu xảy ra và sau khi các hàm mẫu hoặc kết xuất đã được biên dịch:

ExampleComponent.vue

Tài sản: 'Thuộc tính ví dụ.' Không }, Tính toán: { bất động sản () { trả lại cái này.property. Không beforecreate hook được chạy, đoạn trích này sẽ đăng nhập tin nhắn: beforemount () { Console.log (`Tại thời điểm này, VM. $ el chưa được tạo. ') Không Không

}, beforemount hook được chạy, đoạn trích này sẽ đăng nhập tin nhắn:

Đầu ra.At this point, vm.$el has not been created yet.

tạo

the đã tạo hook chạy trước các mẫu và Virtual DOM đã được gắn hoặc hiển thị - bạn có thể truy cập phản ứng < AI = 3> Dữ liệu và Sự kiện đang hoạt động: đã tạo () {this.$el).

Gắn Để sửa đổi DOM, đặc biệt là khi tích hợp các thư viện không phải là VUE:

ExampleComponent.vue

Móc treo thường là những cái móc được sử dụng nhiều nhất. Họ cho phép bạn truy cập vào thành phần của mình ngay trước và sau khi kết xuất đầu tiên. Tuy nhiên, họ không chạy trong quá trình kết xuất phía máy chủ. { Console.log (`Tại thời điểm này, VM. $ EL đã được tạo và EL đã được thay thế.`); Console.log (này. $ el.TextContent) // Thành phần ví dụ. Không Không

trả lại cái này.property. Gắn Móc được chạy, đoạn trích này sẽ ghi nhật ký tin nhắn:

Đầu ra.At this point, vm.$el has been created and el has been replaced.

tạoExample content. (this.$el.textContent) will be logged.

the đã tạo hook chạy trước các mẫu và Virtual DOM đã được gắn hoặc hiển thị - bạn có thể truy cập phản ứng < AI = 3> Dữ liệu và Sự kiện đang hoạt động:

Cập nhật hook được gọi bất cứ khi nào một thuộc tính phản ứng được sử dụng bởi các thay đổi thành phần của bạn hoặc một cái gì đó khác khiến nó trở lại render. Họ cho phép bạn kết nối vào Render-Compute-Compute cho thành phần của bạn.

Sử dụng các móc cập nhật nếu bạn cần biết khi nào thành phần kết xuất lại, có lẽ để gỡ lỗi hoặc định hình.

Không sử dụng các móc cập nhật nếu bạn cần biết khi nào thuộc tính phản ứng trên thành phần của bạn thay đổi. Thay vào đó sử dụng các thuộc tính hoặc người theo dõi được tính toán cho nó.

trước khi cập nhật.

the assupdate hook chạy sau khi các thay đổi dữ liệu trên thành phần của bạn và chu kỳ cập nhật bắt đầu, ngay trước khi dom được vá và hiển thị lại. .beforeUpdate hook runs after data changes on your component and the update cycle begins, right before the DOM is patched and re-rendered.

Sử dụng Beforeupdate Nếu bạn cần có trạng thái mới của bất kỳ dữ liệu phản ứng nào trên thành phần của mình trước khi nó được hiển thị:

ExampleComponent.vue

Gắn Móc được chạy, đoạn trích này sẽ ghi nhật ký tin nhắn: Gắn Móc được chạy, đoạn trích này sẽ ghi nhật ký tin nhắn: Gắn Móc được chạy, đoạn trích này sẽ ghi nhật ký tin nhắn: Gắn Móc được chạy, đoạn trích này sẽ ghi nhật ký tin nhắn: Gắn Móc được chạy, đoạn trích này sẽ ghi nhật ký tin nhắn: Gắn Móc được chạy, đoạn trích này sẽ ghi nhật ký tin nhắn: Gắn Móc được chạy, đoạn trích này sẽ ghi nhật ký tin nhắn: Gắn Móc được chạy, đoạn trích này sẽ ghi nhật ký tin nhắn: Gắn Móc được chạy, đoạn trích này sẽ ghi nhật ký tin nhắn: orupdate () { Console.log (`Tại thời điểm này, Virtual DOM chưa được hiển thị lại hoặc vá lỗi.`) // đăng nhập giá trị truy cập mỗi giây, trước khi cập nhật DOM. Console.log (this.count) Không Không beforemount () { Console.log (`Tại thời điểm này, VM. $ el chưa được tạo. ') Không Không beforemount hook được chạy, đoạn trích này sẽ đăng nhập tin nhắn: beforemount () { Console.log (`Tại thời điểm này, VM. $ el chưa được tạo. ') Không Không beforemount hook được chạy, đoạn trích này sẽ đăng nhập tin nhắn:

Đầu tiên, đoạn trích này sẽ lưu trữ Counter là 0 . Khi đã tạo hook được chạy, nó sẽ tăng Counter mỗi 1000 MS. Khi orupdate hook được chạy, đoạn trích này sẽ đăng nhập tin nhắn: counter as 0. When the created hook is run, it will increment counter every 1000 ms. When the beforeUpdate hook is run, this snippet will log the message:

Đầu ra.At this point, Virtual DOM has not re-rendered or patched yet.

và một số cho Counter cũng được đăng nhập.

cập nhật

Đã cập nhật Móc chạy sau khi thay đổi dữ liệu trên thành phần của bạn và DOM Reender.

Sử dụng Đã cập nhật Nếu bạn cần truy cập DOM sau khi thay đổi thuộc tính:

ExampleComponent.vue

Đã cập nhật () { Console.log (`Tại thời điểm này, Virtual DOM đã kết xuất lại và vá lỗi.`) // bị sa thải mỗi giây, phải luôn luôn đúng Console.log (+ Điều này. $ refs ['example-allement']. TextContent === this.count) Không Không

Đầu tiên, đoạn trích này sẽ lưu trữ Counter là 0 . Khi đã tạo hook được chạy, nó sẽ tăng Counter mỗi 1000 MS. Khi CẬP NHẬT Móc bị chạy, đoạn trích này sẽ ghi nhật ký tin nhắn: counter as 0. When the created hook is run, it will increment counter every 1000 ms. When the updated hook is run, this snippet will log the message:

Đầu ra.At this point, Virtual DOM has re-rendered and patched.

và một số cho Counter cũng được đăng nhập.

cập nhật

Sử dụng Đã cập nhật

{{bộ đếm}} bị bắn ngay trước khi xé. Thành phần của bạn vẫn sẽ được trình bày đầy đủ và chức năng.

sử dụng beforedestroy Nếu bạn cần dọn dẹp các sự kiện hoặc đăng ký phản ứng:

ExampleComponent.vue

. Xuất mặc định { dữ liệu() { trở lại { Quầy: 0. Không }, tạo() { setInterval (() => { cái này ++.+. }, 1000) }, Đã cập nhật () { Console.log (`Tại thời điểm này, Virtual DOM đã kết xuất lại và vá lỗi.`) // bị sa thải mỗi giây, phải luôn luôn đúng beforedestroy () { Console.log (`Tại thời điểm này, người theo dõi, linh kiện trẻ em và người nghe sự kiện chưa bị xé toạc. ') // thực hiện thủ tục xé để xem xét thực hiện. // (Trong trường hợp này, không có gì hiệu quả) this.exampleakyproperty = null. Xóa cái này.exampleakyproperty. Không Không

Console.log (+ Điều này. $ refs ['example-allement']. TextContent === this.count) exampleNeakyProperty . Khi beforedestroy hook được chạy, đoạn trích này sẽ đăng nhập tin nhắn:

Đầu ra.At this point, watchers, child components, and event listeners have not been torn down yet.

và một số cho Counter cũng được đăng nhập.

cập nhật

Đã cập nhật Móc chạy sau khi thay đổi dữ liệu trên thành phần của bạn và DOM Reender.

Sử dụng Đã cập nhật Nếu bạn cần truy cập DOM sau khi thay đổi thuộc tính:

ExampleComponent.vue

Phá hủy () sử dụng beforedestroy sử dụng beforedestroy sử dụng beforedestroy sử dụng beforedestroy sử dụng beforedestroy sử dụng beforedestroy { Console.log (`Tại thời điểm này, người theo dõi, linh kiện trẻ em và người nghe sự kiện đã bị rách xuống. ') Console.log (này) Exampleanalyeanalyticsservice.informservice ('Thành phần bị phá hủy.') Không Không beforedestroy () { beforedestroy () { beforedestroy () { beforedestroy () { beforedestroy () { beforedestroy () {

Đầu tiên, đoạn trích này sẽ nhập examPleAnalyeanalyericsService . Khi beforedestroy hook được chạy, đoạn trích này sẽ đăng nhập tin nhắn:

Đầu ra.At this point, watchers, child components, and event listeners have been torn down.

Phần còn lại của thành phần sẽ được ghi vào bảng điều khiển và examLeanalyeanalyericService sẽ được truyền thông báo Thành phần bị phá hủy. . Counter cũng được đăng nhập. Component destroyed..

Với điều đó, bạn đã hoàn thành việc đánh giá chung của mình về Móc vòng đời VUE.JS.

Móc khác

Có hai móc khác, Kích hoạt và Đã hủy kích hoạt . Đây là những món ăn Keep-Alive Các thành phần, một chủ đề nằm ngoài phạm vi của bài viết này. beforedestroy () {deactivated. These are for keep-alive components, a topic that is outside the scope of this article.

Console.log (`Tại thời điểm này, người theo dõi, linh kiện trẻ em và người nghe sự kiện chưa bị xé toạc. ') tag is toggled on or off. You might use them to fetch data for your component or handle state changes, effectively behaving as created and beforeDestroy without the need to do a full component rebuild.

Phần kết luận

Trong bài viết này, bạn đã được giới thiệu với các móc vòng đời khác nhau có sẵn trong vòng đời ví dụ vue.js. Bạn đã khám phá các trường hợp sử dụng khác nhau để tạo hook, móc nối, cập nhật móc và móc hủy.

Nếu bạn muốn tìm hiểu thêm về VUE.JS, hãy xem trang chủ đề VUE.JS của chúng tôi để biết các bài tập và các dự án lập trình.

Từ khóa » Vòng đời Vuejs