callOnce
在 SSR 或 CSR 期間執行一次指定的函式或程式碼區塊。
此工具自 Nuxt v3.9 起可用。
目的
callOnce
函式旨在僅在以下情況下執行一次指定的函式或程式碼區塊:
- 伺服器端渲染,但不包括 hydration
- 客戶端導覽
這對於僅應執行一次的程式碼非常有用,例如記錄事件或設定全域狀態。
用法
app.vue
<script setup lang="ts">
const websiteConfig = useState('config')
await callOnce(async () => {
console.log('This will only be logged once')
websiteConfig.value = await $fetch('https://my-cms.com/api/website-config')
})
</script>
callOnce
是一個 composable,旨在直接在設定函式、外掛程式或路由中介軟體中呼叫,因為它需要將資料新增至 Nuxt payload,以避免在頁面 hydration 時在客戶端重新呼叫函式。類型
callOnce(fn?: () => any | Promise<any>): Promise<void>
callOnce(key: string, fn?: () => any | Promise<any>): Promise<void>
key
:一個獨特的鍵,確保程式碼僅執行一次。如果您未提供鍵,則會為您產生一個對callOnce
實例的檔案和行號而言獨特的鍵。fn
:要執行一次的函式。此函式也可以傳回Promise
和一個值。