Giới thiệu Composition API trong Vue3 – Vuejs

Tổng quan Vuejs là một trong những Javascript Framework hot nhất hiện nay. Có lẽ vì sự đơn giản, linh hoạt, …. vân vân những ưu điểm mà nó mang lại. Hiện tại phiên bản Vue 3 đã stable. Mình đã mò vào docs trên trang chủ để xem những sự thay đổi. Bùm Composition

Tổng quan

Vuejs là một trong những Javascript Framework hot nhất hiện nay. Có lẽ vì sự đơn giản, linh hoạt, …. vân vân những ưu điểm mà nó mang lại. Hiện tại phiên bản Vue 3 đã stable. Mình đã mò vào docs trên trang chủ để xem những sự thay đổi. Bùm 💣👉Composition API

Nội dung

1. Giới thiệu

Theo phần giới thiệu trên trang chủ của Vue3, Composition API được đề cập bắt đầu từ nhược điểm khó tái sử dụng, maintain code khi ứng dụng ngày càng trở nên lớn.

Mình xin được lấy ví dụ từ trang chủ giới thiệu Composition API của Vue3

exportdefault{
  components:{ RepositoriesFilters, RepositoriesSortBy, RepositoriesList },
  props:{
    user:{
      type: String,
      required:true}},data(){return{
      repositories:[],// 1
      filters:{...},// 3
      searchQuery:''// 2}},
  computed:{filteredRepositories(){...},// 3repositoriesMatchingSearchQuery(){...},// 2},
  watch:{
    user:'getUserRepositories'// 1},
  methods:{getUserRepositories(){// using `this.user` to fetch user repositories},// 1updateFilters(){...},// 3},mounted(){this.getUserRepositories()// 1}}

Khi dự án lớn dần lên, khi muốn thêm một chức năng chúng ta sẽ thấy khó để có thể chọn một chỗ phù hợp viết code. (data, methods, mounted,…) Quá nhiều vấn đề cần quan tâm.

Để giải quyết khó khăn này, Composition API đã được sinh ra.
Để bắt đầu làm việc với Composition API, chúng ta cần khai báo một option component mới là setup.

exportdefault{setup(){// Composition API work.}}

Và bắt đầu từ đây, bạn có thể tạm quên đi các option component khác hay dùng như data, methods, computed, watch, các lifecycle của Vue. Mọi thứ đều có thể xử lý được trong Composition API.
À mà khoan, các bạn đừng vội quên vội, mình cần các bạn nhớ để so sánh nó cách code trước và sau khi Composition API ra đời.

2. Ref, reactive

ref, reactive là các hook được sử dụng trong Composition API để định nghĩa các data, giống như việc chúng ta định nghĩa các data ở trong option data
Ok giờ hãy cùng so sánh hai cách code

Trong Composition API, chúng ta dùng hook ref hoặc reactive để định nghĩa một biến reactive.

import{ ref }from"vue";const hello =ref("Hello World");

Khi cần sử dụng hoặc thay đổi giá trị biến này trong Composition API:

import{ ref }from"vue";const hello =ref("Hello World");

console.log(hello.value);// kết quả sẽ là: Hello World

Quá đơn giản phải không nào. Ta chỉ cần hello.value là lấy được giá trị của biến đó rồi.
Đối với reactive:

import{ reactive }from"vue";const hello =reactive({
    name:"Nguyễn Văn A",
    age:});

console.log(hello);

Đối với reactive, sẽ không cần .value

khi cần dùng biến đó trên template vue, ta chỉ cần câu lệnh return về một object có biến đó.
VD:

import{ ref }from"vue";const hello =ref("Hello World");return{ hello };

3. Methods

Trong Vue2, khi cần khai báo một hàm hoặc một phương thức, chúng ta sẽ định nghĩa nó trong option component methods thì trong Composition API bạn có thể định nghĩa nó như một hàm thông thường và return nó như refreactive mình đã nói ở phần 2

constsayHello=()=>{
    console.log("Hello World");}return{ sayHello };

4. Computed

Trong Composition API, computed được định nghĩa thông qua hook computed.

import{ ref, computed }from"vue";const count =ref(0);const countComputed =computed(()=> count.value +1);// định nghĩa một computed phụ thuộc vào data count.

5. Watch

Trong Composition API, quan sát một biến được thực hiện thông qua hook watch. Đặc biệt Vue3 hỗ trợ watch nhiều biến

import{ ref, watch }from"vue";const count =ref(0);// quan sát sự thay đổi của một biếnwatch(count,()=>{
    console.log("Data count vừa thay đổi");});const var1 =ref("Biến 1");const var2 =ref("Biến 2");// quan sát 2 biếnwatch([var1, var2],()=>{
    console.log("Vừa có sự thay đổi biến var1 hoặc var2");});

6 Lifecycle

Trong Composition API, hầu hết các lifecycle đều tồn tại

import{ onMounted}from"vue";onMounted(()=>{
    console.log("component đã được mount");});

Cụ thể về các lifecycle có thể sử dụng được trong Composition API, tham khảo: https://v3.vuejs.org/guide/composition-api-lifecycle-hooks.html#lifecycle-hooks

Tổng kết

Bài này mình đã giới thiệu tổng thể về Composition API trong Vue3. Có thể bạn đang quen với cách code trong Vue2, nhưng tin mình đi nếu bạn thử tiếp xúc với Composition API bạn sẽ thấy nó thật tuyệt. 😍

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ