Skip to content

Commit da6690c

Browse files
authored
fix(server-renderer): render className as escaped string (#14469)
1 parent 521157d commit da6690c

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

packages/server-renderer/__tests__/ssrRenderAttrs.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ describe('ssr: renderClass', () => {
154154
ssrRenderAttrs({
155155
className: ['foo', 'bar'],
156156
}),
157-
).toBe(` class="foo bar"`)
157+
).toBe(` class="foo,bar"`)
158158
})
159159
})
160160

packages/server-renderer/src/helpers/ssrRenderAttrs.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,16 @@ export function ssrRenderAttrs(
4242
const value = props[key]
4343
// force as attribute
4444
if (key.startsWith('^')) key = key.slice(1)
45-
if (key === 'class' || key === 'className') {
45+
if (key === 'class') {
4646
ret += ` class="${ssrRenderClass(value)}"`
4747
} else if (key === 'style') {
4848
ret += ` style="${ssrRenderStyle(value)}"`
49+
} else if (key === 'className') {
50+
// className should not go through ssrRenderClass which normalizes non-string
51+
// values into strings. it should coerce directly into strings
52+
if (value != null) {
53+
ret += ` class="${escapeHtml(String(value))}"`
54+
}
4955
} else {
5056
ret += ssrRenderDynamicAttr(key, value, tag)
5157
}

0 commit comments

Comments
 (0)