Pre-order my new book on Vue Design Patterns at 30% discount. Click here for more details

Exploring the Heart of Vue.js: Vue Instance and Lifecycle Hooks

Published by Jimoh Sherifdeen's profile picture Jimoh Sherifdeen on  Thu, 17 Aug 2023 15:15:00 GMT

A screenshot showing Vue lifecycle

Introduction

Vue.js, a progressive JavaScript framework, has taken the web development world by storm. At the core of Vue’s simplicity and reactivity lies the Vue instance and its lifecycle hooks. In this article, we will embark on a journey to unravel the intricacies of the Vue instance and dive deep into the lifecycle hooks that empower developers to create dynamic and responsive applications.

Understanding the Vue Instance

The Vue instance serves as the foundation of every Vue application. It acts as a mediator between your data and the DOM, enabling reactive behavior and making your application truly come to life.

Creating a Vue Instance

To create a Vue instance, you invoke the Vue constructor. This instance serves as the entry point to your application. Let's create a basic Vue instance:

    const app = new Vue({ el: ‘#app’, data: { message: ‘Hello, Vue!} });

In this example, we bind the Vue instance to the element with the ID “app” and introduce a data property called message.

Lifecycle Hooks: A Glimpse into the Journey

The lifecycle of a Vue instance can be divided into various stages, each with corresponding lifecycle hooks that allow you to execute code at specific moments during a component’s lifespan. Understanding these hooks is crucial for building complex, interactive applications.

1. Creation Hooks

beforeCreate: This hook is called before the instance is created. Data and events are not yet accessible.
created: At this stage, the instance has been initialized, and data and events are accessible. Perfect for initialization tasks and API calls.

2. Mounting Hooks

beforeMount: Just before the component is inserted into the DOM, this hook is triggered.
mounted: The component is now in the DOM, allowing you to access its elements and interact with external libraries.

3. Updating Hooks

beforeUpdate: This hook is called when data changes, just before the DOM is updated. Useful for preparing for an update.
updated: After the DOM is re-rendered with the updated data, this hook is triggered.

4. Destruction Hooks

beforeDestroy: Prior to the component being destroyed, this hook is executed. Clean-up tasks, such as removing event listeners, can be performed here.
destroyed: When the component is destroyed and all watchers and child components have been removed, this hook is called.

Using Lifecycle Hooks

Let’s illustrate the use of lifecycle hooks with an example. Imagine you have a component that fetches data from an API when it’s created and updates it when a certain condition changes:

new Vue({
el: "#app",
data: {
posts: [],
category: "technology",
},
created() {
this.fetchPosts();
},
watch: {
category(newCategory) {
this.fetchPosts(newCategory);
},
},
methods: {
fetchPosts(category) {
// Fetch posts from the API based on the category
},
},
});

Conclusion

Mastering the Vue instance and its lifecycle hooks empowers you to create responsive, dynamic, and data-driven web applications. With the ability to manipulate data, interact with the DOM, and respond to changes at various stages of a component’s lifecycle, Vue.js becomes an indispensable tool for building modern web experiences. By harnessing the power of Vue instances and lifecycle hooks, you’re well-equipped to embark on a journey of crafting remarkable and engaging user interfaces.

Architecting Vue.js 3 Enterprise-Ready Web Applications

Get the FREE chapter!

With this 15+ pages long chapter You will learn how to unit test a Vue.js 3 component and the components and pages’ methods: You will also learn Unit Testing tools such as Jest and Mocha and use them to effectively unit Test an enterprise project.

    Architecting Vue.js 3 Enterprise-Ready Web Applications chapter 9 Best Practice in Unit Testing