Skip to content

Commit

Permalink
fix(compiler-dom): remove v-bind boolean attribute with literal false…
Browse files Browse the repository at this point in the history
… value when stringifying (#6635)

fix #6617
  • Loading branch information
moushicheng authored and yyx990803 committed Sep 27, 2022
1 parent 57ffc3e commit 6c6fe2c
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
23 changes: 23 additions & 0 deletions packages/compiler-dom/__tests__/transforms/stringifyStatic.spec.ts
Expand Up @@ -410,6 +410,29 @@ describe('stringify static html', () => {
})
})

// #6617
test('should remove boolean attribute for `false`', () => {
const { ast } = compileWithStringify(
`<button :disabled="false">enable</button>${repeat(
`<div></div>`,
StringifyThresholds.NODE_COUNT
)}`
)
expect(ast.hoists[0]).toMatchObject({
type: NodeTypes.JS_CALL_EXPRESSION,
callee: CREATE_STATIC,
arguments: [
JSON.stringify(
`<button>enable</button>${repeat(
`<div></div>`,
StringifyThresholds.NODE_COUNT
)}`
),
'21'
]
})
})

test('should stringify svg', () => {
const svg = `<svg width="50" height="50" viewBox="0 0 50 50" fill="none" xmlns="http://www.w3.org/2000/svg">`
const repeated = `<rect width="50" height="50" fill="#C4C4C4"></rect>`
Expand Down
10 changes: 9 additions & 1 deletion packages/compiler-dom/src/transforms/stringifyStatic.ts
Expand Up @@ -28,7 +28,8 @@ import {
normalizeStyle,
stringifyStyle,
makeMap,
isKnownSvgAttr
isKnownSvgAttr,
isBooleanAttr
} from '@vue/shared'
import { DOMNamespaces } from '../parserOptions'

Expand Down Expand Up @@ -298,6 +299,13 @@ function stringifyElement(
}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`
continue
}
// #6568
if (
isBooleanAttr((p.arg as SimpleExpressionNode).content) &&
exp.content === 'false'
) {
continue
}
// constant v-bind, e.g. :foo="1"
let evaluated = evaluateConstant(exp)
if (evaluated != null) {
Expand Down

0 comments on commit 6c6fe2c

Please sign in to comment.