Skip to content

Commit

Permalink
fix(nuxt): don't check for layout/page with <ClientOnly> (#25714)
Browse files Browse the repository at this point in the history
  • Loading branch information
danielroe committed Feb 9, 2024
1 parent 3c27141 commit fd671a2
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion packages/nuxt/src/app/components/client-only.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { cloneVNode, createElementBlock, createStaticVNode, defineComponent, getCurrentInstance, h, onMounted, provide, ref } from 'vue'
import type { ComponentInternalInstance, ComponentOptions, InjectionKey } from 'vue'
import { useNuxtApp } from '../nuxt'
import { getFragmentHTML } from './utils'

export const clientOnlySymbol: InjectionKey<boolean> = Symbol.for('nuxt:client-only')
Expand All @@ -12,6 +13,12 @@ export default defineComponent({
setup (_, { slots, attrs }) {
const mounted = ref(false)
onMounted(() => { mounted.value = true })
// Bail out of checking for pages/layouts as they might be included under `<ClientOnly>` 🤷‍♂️
if (import.meta.dev) {
const nuxtApp = useNuxtApp()
nuxtApp._isNuxtPageUsed = true
nuxtApp._isNuxtLayoutUsed = true
}
provide(clientOnlySymbol, true)
return (props: any) => {
if (mounted.value) { return slots.default?.() }
Expand Down Expand Up @@ -63,7 +70,7 @@ export function createClientOnly<T extends ComponentOptions> (component: T) {
// remove existing directives during hydration
const directives = extractDirectives(instance)
// prevent attrs inheritance since a staticVNode is rendered before hydration
for(const key in attrs) {
for (const key in attrs) {
delete instance.attrs[key]
}
const mounted$ = ref(false)
Expand Down

0 comments on commit fd671a2

Please sign in to comment.