Skip to content

Commit 33cf113

Browse files
defccyyx990803
authored andcommitted
Update ssr class render (fix vuejs#4143) (vuejs#4146)
* fix ssr class render * update test case
1 parent a4fcdbe commit 33cf113

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

src/platforms/web/server/modules/class.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
import { genClassForVnode } from 'web/util/index'
44

55
export default function renderClass (node: VNodeWithData): ?string {
6-
if (node.data.class || node.data.staticClass) {
7-
return ` class="${genClassForVnode(node)}"`
6+
const classList = genClassForVnode(node)
7+
if (classList) {
8+
return ` class="${classList}"`
89
}
910
}

test/ssr/ssr-string.spec.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,42 @@ describe('SSR: renderToString', () => {
5757
})
5858
})
5959

60+
it('custome component class', done => {
61+
renderVmWithOptions({
62+
template: '<div><cmp class="cmp"></cmp></div>',
63+
components: {
64+
cmp: {
65+
render: h => h('div', 'test')
66+
}
67+
}
68+
}, result => {
69+
expect(result).toContain('<div server-rendered="true"><div class="cmp">test</div></div>')
70+
done()
71+
})
72+
})
73+
74+
it('nested component class', done => {
75+
renderVmWithOptions({
76+
template: '<cmp class="outer" :class="cls"></cmp>',
77+
data: { cls: { 'success': 1 }},
78+
components: {
79+
cmp: {
80+
render: h => h('div', [h('nested', { staticClass: 'nested', 'class': { 'error': 1 }})]),
81+
components: {
82+
nested: {
83+
render: h => h('div', { staticClass: 'inner' }, 'test')
84+
}
85+
}
86+
}
87+
}
88+
}, result => {
89+
expect(result).toContain('<div server-rendered="true" class="outer success">' +
90+
'<div class="inner nested error">test</div>' +
91+
'</div>')
92+
done()
93+
})
94+
})
95+
6096
it('dynamic style', done => {
6197
renderVmWithOptions({
6298
template: '<div style="background-color:black" :style="{ fontSize: fontSize + \'px\', color: color }"></div>',

0 commit comments

Comments
 (0)