iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
影片教學

Nuxt 3 快速入門系列 第 9

[影片教學] Nuxt 3 組合式函式 (Composables)

  • 分享至 

  • xImage
  •  

Yes

👆建議你可以使用影片子母畫面功能或全螢幕播放來獲得最佳的觀賞體驗,👇下方是本篇教學的相關筆記。


建立與使用組合式函式

composables 目錄下建立一個檔案 ./composables/useCounter.js

export default function () {
  const count = ref(0)

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

  return {
    count,
    increment
  }
}

修改 app.vue 檔案:

<template>
  <div class="flex flex-col items-center">
    <span class="mt-8 text-4xl text-gray-700">{{ count }}</span>
    <button
      class="my-6 rounded-sm bg-sky-600 px-4 py-2 text-base font-medium text-white hover:bg-sky-700 focus:outline-none focus:ring-2 focus:ring-sky-500 focus:ring-offset-2"
      @click="increment"
    >
      增加 1
    </button>
  </div>
</template>

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

使用具名匯出 (Named export)

如果建立組合式函式時,使用的是有具名的匯出,那麼組合式函式對應的名稱,就不是檔案名稱,而是檔案內 export 出來的名稱。
例如,建立 ./composables/count.js,檔案內容如下,組合式函式名稱就不會是檔案名稱 count,而是具名導出的名稱 useCounter。

export const useCounter = () => {
  const count = ref(0)

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

  return {
    count,
    increment
  }
}

配置掃描巢狀目錄

修改 ./nuxt.config.ts 檔案,可以調整自動載入額外掃描的資料夾。

export default defineNuxtConfig({
  imports: {
    dirs: [
      // 掃描 composables 目錄頂層
      'composables',
      // 掃描深度一層的特定檔案
      'composables/*/index.{ts,js,mjs,mts}',
      // 掃描整個 composables 目錄下的檔案
      'composables/**'
    ]
  }
})

感謝大家的閱讀,歡迎大家給予建議與討論,也請各位大大鞭小力一些:)
如果對這個 Nuxt 3 系列感興趣,可以訂閱接收通知,也歡迎分享給喜歡或正在學習 Nuxt 3 的夥伴。

範例程式碼

參考資料


上一篇
[影片教學] Nuxt 3 元件 (Components)
下一篇
[影片教學] Nuxt 3 插件 (Plugins)
系列文
Nuxt 3 快速入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言