Skip to content

Commit 627eb05

Browse files
authored
fix!: sync renderDOMHead() (#628)
* fix!: sync `renderDOMHead` * doc: missing
1 parent 0177397 commit 627eb05

21 files changed

Lines changed: 238 additions & 242 deletions

β€Ždocs/0.vue/head/guides/1.core-concepts/4.pausing-dom-rendering.mdβ€Ž

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ In Vue, this is especially useful when you're using `<Suspense>`{lang="html"}.
1010
::code-group
1111

1212
```ts [Universal]
13-
import { renderDOMHead } from '@unhead/dom'
14-
import { createHead } from 'unhead'
13+
import { createHead, renderDOMHead } from 'unhead/client'
1514

1615
const head = createHead()
1716

@@ -29,7 +28,7 @@ loadPage().then(() => {
2928
```
3029

3130
```ts [Vue]
32-
import { renderDOMHead } from '@unhead/dom'
31+
import { renderDOMHead } from 'unhead/client'
3332
import { createHead } from '@unhead/vue'
3433
import { useRouter } from 'vue-router'
3534

β€Ždocs/head/1.guides/2.advanced/11.extending-unhead.mdβ€Ž

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -195,12 +195,16 @@ For a complete list of available hooks and their signatures, refer to the hooks
195195
```ts
196196
// From packages/unhead/src/types/hooks.ts
197197
export interface HeadHooks {
198-
'entries:resolve': (ctx: CallbackParams<'entries:resolve'>) => void | Promise<void>
199-
'tags:resolve': (ctx: CallbackParams<'tags:resolve'>) => void | Promise<void>
200-
'tag:normalise': (ctx: TagAugmentation) => void | Promise<void>
201-
'tag:resolve': (ctx: CallbackParams<'tag:resolve'>) => void | Promise<void>
202-
'tag:validate': (ctx: TagAugmentation) => void | Promise<void>
203-
'tag:generated': (ctx: TagAugmentation) => void | Promise<void>
198+
'entries:updated': (ctx: Unhead<any>) => HookResult
199+
'entries:resolve': (ctx: EntryResolveCtx<any>) => SyncHookResult
200+
'entries:normalize': (ctx: { tags: HeadTag[], entry: HeadEntry<any> }) => SyncHookResult
201+
'tag:normalise': (ctx: { tag: HeadTag, entry: HeadEntry<any>, resolvedOptions: CreateClientHeadOptions }) => SyncHookResult
202+
'tags:beforeResolve': (ctx: TagResolveContext) => SyncHookResult
203+
'tags:resolve': (ctx: TagResolveContext) => SyncHookResult
204+
'tags:afterResolve': (ctx: TagResolveContext) => SyncHookResult
205+
'dom:beforeRender': (ctx: DomBeforeRenderCtx) => SyncHookResult
204206
// ...additional hooks
205207
}
206208
```
209+
210+
Note: `SyncHookResult` is `void` (synchronous only), while `HookResult` is `void | Promise<void>`.

β€Ždocs/head/7.api/hooks/09.dom-before-render.mdβ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ The `dom:beforeRender` hook is called before tags are rendered to the DOM in cli
1111

1212
```ts
1313
export interface Hook {
14-
'dom:beforeRender': (ctx: DomBeforeRenderCtx) => HookResult
14+
'dom:beforeRender': (ctx: DomBeforeRenderCtx) => SyncHookResult
1515
}
1616
```
1717

@@ -25,7 +25,7 @@ The `DomBeforeRenderCtx` interface extends `ShouldRenderContext`:
2525

2626
```ts
2727
interface DomBeforeRenderCtx extends ShouldRenderContext {
28-
tags: DomRenderTagContext[] // Note: this is deprecated and will always be empty
28+
tags: HeadTag[]
2929
}
3030

3131
interface ShouldRenderContext {
@@ -35,7 +35,7 @@ interface ShouldRenderContext {
3535

3636
### Returns
3737

38-
`HookResult` which is either `void` or `Promise<void>`
38+
`SyncHookResult` which is `void`. This hook is synchronous and cannot be async.
3939

4040
## Usage Example
4141

β€Žpackages/unhead/src/client/createHead.tsβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export function createHead<T = ResolvableHead>(options: CreateClientHeadOptions
2222
{
2323
key: 'client',
2424
hooks: {
25-
'entries:updated': render,
25+
'entries:updated': (head) => { render(head) },
2626
},
2727
},
2828
],

0 commit comments

Comments
 (0)