Vue.js 3.0 Tutorial

Vue.js 3.0 Component Advanced

Vue.js 3.0 Transitions & Animations

Vue.js 3.0 Reusable & Combinable

Vue.js 3.0 Advanced

Vue.js 3.0 Tools

Vue.js 3.0 Scale

Vue.js 3.0 Accessibility

Vue.js 3.0 Migrating from Vue2

Vue.js 3.0 Contribute Documentation

Vue.js 3.0 API References

Vue.js 3.0 Style Guide

Vue 3.0 Composition API

The Composition API is a new addition in Vue 3.0 that allows developers to use a more flexible function-based approach to creating and organizing component logic.

This tutorial will cover creating a simple counter component using the Composition API.

Step 1: Initialize your Vue project.

You can create a new Vue 3 project using the Vue CLI.

vue create my-project

Select Vue 3 when asked which version of Vue to use.

Step 2: Go to your App.vue file (or whichever component you'd like to create your counter in).

You can then create a simple counter component using the Composition API like this:

<template>
  <button @click="increment">{{ count }}</button>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const count = ref(0);

    const increment = () => {
      count.value++;
    };

    return {
      count,
      increment
    };
  }
};
</script>

In the setup() method, we're declaring our reactive data and functions. Here, we use ref() to create a reactive reference for our count variable. Then we define an increment() function to increase the value of count.

Finally, we return the count variable and increment function from the setup() method so they can be used in our template.

Step 3: Run your application.

You can run your Vue 3 application with the following command:

npm run serve

After starting your application, you should see a button that increments its number each time it's clicked. This is a basic example of using the Composition API in Vue 3.0.

The Composition API offers a more flexible way to compose your component's logic, especially for more complex components. The key advantage here is the ability to abstract and reuse pieces of logic across different components.

  1. Vue 3.0 Reactive Function in Composition API:

    • Description: The reactive function in the Composition API is used to create a reactive object, making its properties reactive.
    • Code Example:
      <script>
      import { reactive } from 'vue';
      
      export default {
        setup() {
          const user = reactive({
            name: 'John Doe',
            age: 25,
          });
      
          return {
            user,
          };
        },
      };
      </script>
      
  2. Computed Properties in Vue 3.0 Composition API:

    • Description: Computed properties are created using the computed function in the Composition API, allowing for reactive data derived from other reactive data.
    • Code Example:
      <script>
      import { reactive, computed } from 'vue';
      
      export default {
        setup() {
          const user = reactive({
            firstName: 'John',
            lastName: 'Doe',
          });
      
          const fullName = computed(() => `${user.firstName} ${user.lastName}`);
      
          return {
            user,
            fullName,
          };
        },
      };
      </script>
      
  3. Lifecycle Hooks in Vue 3.0 Composition API:

    • Description: Lifecycle hooks in the Composition API are replaced by the onXXX functions like onMounted, onUpdated, and onUnmounted.
    • Code Example:
      <script>
      import { onMounted, onUnmounted } from 'vue';
      
      export default {
        setup() {
          onMounted(() => {
            console.log('Component is mounted');
          });
      
          onUnmounted(() => {
            console.log('Component is unmounted');
          });
        },
      };
      </script>
      
  4. Refs and Reactive References in Vue 3.0:

    • Description: The ref function is used to create reactive references, allowing primitive values and objects to be reactive.
    • Code Example:
      <script>
      import { ref } from 'vue';
      
      export default {
        setup() {
          const count = ref(0);
      
          return {
            count,
          };
        },
      };
      </script>
      
  5. Vue 3.0 watchEffect in Composition API:

    • Description: watchEffect is used for reactive side effects in the Composition API, reacting to changes in reactive data.
    • Code Example:
      <script>
      import { ref, watchEffect } from 'vue';
      
      export default {
        setup() {
          const count = ref(0);
      
          watchEffect(() => {
            console.log(`Count is: ${count.value}`);
          });
      
          return {
            count,
          };
        },
      };
      </script>
      
  6. Using Vue 3.0 provide and inject in Composition API:

    • Description: provide and inject functions facilitate component communication and state sharing in the Composition API.
    • Code Example:
      <script>
      import { provide, inject, ref } from 'vue';
      
      const key = Symbol();
      
      const useSharedCounter = () => {
        const counter = ref(0);
        provide(key, counter);
        return counter;
      };
      
      export default {
        setup() {
          const counter = useSharedCounter();
      
          return {
            counter,
          };
        },
      };
      </script>
      
      <script>
      import { inject } from 'vue';
      
      const key = Symbol();
      
      export default {
        setup() {
          const counter = inject(key);
      
          return {
            counter,
          };
        },
      };
      </script>
      
  7. Vue 3.0 Composition API and Reusability:

    • Description: The Composition API promotes code reusability by allowing logic to be extracted into composable functions.
    • Code Example:
      <script>
      import { ref } from 'vue';
      
      const useCounter = () => {
        const count = ref(0);
      
        const increment = () => {
          count.value++;
        };
      
        return {
          count,
          increment,
        };
      };
      
      export default {
        setup() {
          const { count, increment } = useCounter();
      
          return {
            count,
            increment,
          };
        },
      };
      </script>
      
  8. Vue 3.0 Composition API and TypeScript:

    • Description: TypeScript can be seamlessly integrated with the Composition API for type-safe Vue components.
    • Code Example:
      <script lang="ts">
      import { ref } from 'vue';
      
      interface User {
        name: string;
        age: number;
      }
      
      export default {
        setup(): { user: User } {
          const user = ref<User>({
            name: 'John Doe',
            age: 25,
          });
      
          return {
            user,
          };
        },
      };
      </script>
      
  9. Vue 3.0 Composition API with Vuex:

    • Description: Vuex can be used in the Composition API to manage global state and actions.
    • Code Example:
      <script>
      import { useStore } from 'vuex';
      
      export default {
        setup() {
          const store = useStore();
      
          const increment = () => {
            store.commit('increment');
          };
      
          return {
            increment,
          };
        },
      };
      </script>