Skip to content

Commit cf5d715

Browse files
committed
fix(useScriptEventPage): remove hooks on dispose
1 parent 34d7be7 commit cf5d715

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

src/runtime/composables/useScriptEventPage.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useNuxtApp, useRoute, injectHead } from 'nuxt/app'
2-
import { ref } from 'vue'
2+
import { ref, onScopeDispose } from 'vue'
33
import type { TrackedPage } from '#nuxt-scripts/types'
44

55
export function useScriptEventPage(onChange?: (payload: TrackedPage) => void) {
@@ -17,7 +17,7 @@ export function useScriptEventPage(onChange?: (payload: TrackedPage) => void) {
1717
let lastPayload: TrackedPage = { path: '', title: '' }
1818
let stopDomWatcher = () => {}
1919
// TODO make sure useAsyncData isn't running
20-
nuxt.hooks.hook('page:finish', () => {
20+
const stopPageFinishHook = nuxt.hooks.hook('page:finish', () => {
2121
Promise.race([
2222
// possibly no head update is needed
2323
new Promise(resolve => setTimeout(resolve, 100)),
@@ -39,5 +39,11 @@ export function useScriptEventPage(onChange?: (payload: TrackedPage) => void) {
3939
}
4040
})
4141
})
42+
43+
onScopeDispose(() => {
44+
stopDomWatcher()
45+
stopPageFinishHook()
46+
})
47+
4248
return payload
4349
}

0 commit comments

Comments
 (0)