📖 Vue.js Toàn tập - Composition API
70 phút

Composition API trong Vue 3

Giới thiệu Composition API

Composition API là cách mới để tổ chức logic trong Vue components.

Setup Function

<template>
  <div>
    <h1>{{ title }}</h1>
    <p>Count: {{ count }}</p>
    <button @click="increment">Tăng</button>
  </div>
</template>

<script>
import { ref, computed } from 'vue'

export default {
  setup() {
    const title = ref('Vue 3 Composition API')
    const count = ref(0)
    
    const increment = () => {
      count.value++
    }
    
    const doubleCount = computed(() => count.value * 2)
    
    return {
      title,
      count,
      increment,
      doubleCount
    }
  }
}
</script>

Script Setup (Syntactic Sugar)

<template>
  <div>
    <h1>{{ title }}</h1>
    <p>Count: {{ count }}</p>
    <p>Double: {{ doubleCount }}</p>
    <button @click="increment">Tăng</button>
  </div>
</template>

<script setup>
import { ref, computed } from 'vue'

const title = ref('Vue 3 Script Setup')
const count = ref(0)

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

const doubleCount = computed(() => count.value * 2)
</script>

Reactivity Fundamentals

ref()

import { ref } from 'vue'

const count = ref(0)
console.log(count.value) // 0

count.value++
console.log(count.value) // 1

reactive()

import { reactive } from 'vue'

const state = reactive({
  count: 0,
  name: 'Vue'
})

console.log(state.count) // 0
state.count++

Lifecycle Hooks

<script setup>
import { onMounted, onUpdated, onUnmounted } from 'vue'

onMounted(() => {
  console.log('Component mounted')
})

onUpdated(() => {
  console.log('Component updated')
})

onUnmounted(() => {
  console.log('Component unmounted')
})
</script>

Composables - Custom Hooks

// composables/useCounter.js
import { ref } from 'vue'

export function useCounter(initialValue = 0) {
  const count = ref(initialValue)
  
  const increment = () => count.value++
  const decrement = () => count.value--
  const reset = () => count.value = initialValue
  
  return {
    count,
    increment,
    decrement,
    reset
  }
}
<script setup>
import { useCounter } from '@/composables/useCounter'

const { count, increment, decrement } = useCounter(10)
</script>

Bài tập thực hành

Hãy tạo custom composable cho việc quản lý state!

📝 Bài tập (2)

  1. Tách logic todo list thành composable

  2. Tạo composable để lưu dữ liệu vào localStorage

Tiến độ khóa học
Bài học "Composition API" - Khóa học "Vue.js Toàn tập"