👆建議你可以使用影片子母畫面功能或全螢幕播放來獲得最佳的觀賞體驗,👇下方是本篇教學的相關筆記。
在 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>
如果建立組合式函式時,使用的是有具名的匯出,那麼組合式函式對應的名稱,就不是檔案名稱,而是檔案內 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 的夥伴。
範例程式碼
參考資料