diff options
author | 2024-10-03 20:52:11 +0200 | |
---|---|---|
committer | 2024-10-03 20:52:11 +0200 | |
commit | f9dd9428c6cd1c9d23488ea4645f186b4a4ad4b2 (patch) | |
tree | e727e0ad919b5e6ea81c2c9e897c35661bce0a41 /packages/integrations/vue/server.js | |
parent | 34d79527a4cd88864c4a9128a393c0d2f7d9eda7 (diff) | |
download | astro-f9dd9428c6cd1c9d23488ea4645f186b4a4ad4b2.tar.gz astro-f9dd9428c6cd1c9d23488ea4645f186b4a4ad4b2.tar.zst astro-f9dd9428c6cd1c9d23488ea4645f186b4a4ad4b2.zip |
fix(vue): useId() collisions (#12112)
Diffstat (limited to 'packages/integrations/vue/server.js')
-rw-r--r-- | packages/integrations/vue/server.js | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/packages/integrations/vue/server.js b/packages/integrations/vue/server.js index afdc9e8a2..5b7f6cb50 100644 --- a/packages/integrations/vue/server.js +++ b/packages/integrations/vue/server.js @@ -2,12 +2,19 @@ import { setup } from 'virtual:@astrojs/vue/app'; import { createSSRApp, h } from 'vue'; import { renderToString } from 'vue/server-renderer'; import StaticHtml from './static-html.js'; +import { incrementId } from './context.js'; function check(Component) { return !!Component['ssrRender'] || !!Component['__ssrInlineRender']; } async function renderToStaticMarkup(Component, inputProps, slotted, metadata) { + let prefix; + if (this && this.result) { + prefix = incrementId(this.result); + } + const attrs = { prefix }; + const slots = {}; const props = { ...inputProps }; delete props.slot; @@ -21,9 +28,10 @@ async function renderToStaticMarkup(Component, inputProps, slotted, metadata) { }); } const app = createSSRApp({ render: () => h(Component, props, slots) }); + app.config.idPrefix = prefix; await setup(app); const html = await renderToString(app); - return { html }; + return { html, attrs }; } export default { |