const { ssrRenderAttrs: _ssrRenderAttrs } = require("vue/server-renderer")
return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<div\${_ssrRenderAttrs(_mergeProps({
+ _push(\`<div\${_ssrRenderAttrs(_mergeProps(_attrs, {
style: (_ctx.foo) ? null : { display: "none" }
- }, _attrs))}></div>\`)
+ }))}></div>\`)
}"
`)
})
`)
})
+ test('with style + display', () => {
+ expect(compileWithWrapper(`<div v-show="foo" style="display:flex" />`).code)
+ .toMatchInlineSnapshot(`
+ "const { ssrRenderStyle: _ssrRenderStyle, ssrRenderAttrs: _ssrRenderAttrs } = require("vue/server-renderer")
+
+ return function ssrRender(_ctx, _push, _parent, _attrs) {
+ _push(\`<div\${
+ _ssrRenderAttrs(_attrs)
+ }><div style="\${
+ _ssrRenderStyle([
+ {"display":"flex"},
+ (_ctx.foo) ? null : { display: "none" }
+ ])
+ }"></div></div>\`)
+ }"
+ `)
+ })
+
test('with v-bind', () => {
expect(
compileWithWrapper(
const hasCustomDir = node.props.some(
p => p.type === NodeTypes.DIRECTIVE && !isBuiltInDirective(p.name),
)
+
+ // v-show has a higher priority in ssr
+ const vShowPropIndex = node.props.findIndex(
+ i => i.type === NodeTypes.DIRECTIVE && i.name === 'show',
+ )
+ if (vShowPropIndex !== -1) {
+ const vShowProp = node.props[vShowPropIndex]
+ node.props.splice(vShowPropIndex, 1)
+ node.props.push(vShowProp)
+ }
+
const needMergeProps = hasDynamicVBind || hasCustomDir
if (needMergeProps) {
const { props, directives } = buildProps(