fix(nuxt): speculation rules should be reactive (#9472)

This commit is contained in:
Daniel Roe 2022-12-05 10:46:13 +00:00 committed by GitHub
parent 1059b8c9a8
commit 5fe7c1c24d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4,10 +4,10 @@ import { defineNuxtPlugin, useHead } from '#app'
export default defineNuxtPlugin((nuxtApp) => { export default defineNuxtPlugin((nuxtApp) => {
const externalURLs = ref(new Set<string>()) const externalURLs = ref(new Set<string>())
useHead({ function generateRules () {
script: [ return {
() => ({
type: 'speculationrules', type: 'speculationrules',
key: 'speculationrules',
innerHTML: JSON.stringify({ innerHTML: JSON.stringify({
prefetch: [ prefetch: [
{ {
@ -17,13 +17,18 @@ export default defineNuxtPlugin((nuxtApp) => {
} }
] ]
}) })
}) }
] }
const head = useHead({
script: [generateRules()]
}) })
nuxtApp.hook('link:prefetch', (url) => { nuxtApp.hook('link:prefetch', (url) => {
const { protocol } = parseURL(url) const { protocol } = parseURL(url)
if (protocol && ['http:', 'https:'].includes(protocol)) { if (protocol && ['http:', 'https:'].includes(protocol)) {
externalURLs.value.add(url) externalURLs.value.add(url)
head?.patch({
script: [generateRules()]
})
} }
}) })
}) })