fix(compiler-dom): bail stringification on table elements

close #1230, close #1268
This commit is contained in:
Evan You 2020-06-09 17:02:27 -04:00
parent 64ec8bfb54
commit a938b61edc
2 changed files with 15 additions and 6 deletions

View File

@ -25,7 +25,8 @@ import {
toDisplayString,
normalizeClass,
normalizeStyle,
stringifyStyle
stringifyStyle,
makeMap
} from '@vue/shared'
export const enum StringifyThresholds {
@ -145,6 +146,8 @@ const replaceHoist = (
context.hoists[context.hoists.indexOf(hoistToReplace)] = replacement
}
const isNonStringifiable = /*#__PURE__*/ makeMap(`thead,tr,th,tbody,td`)
/**
* for a hoisted node, analyze it and return:
* - false: bailed (contains runtime constant)
@ -153,6 +156,10 @@ const replaceHoist = (
* - ec is the number of element with bindings inside
*/
function analyzeNode(node: StringifiableNode): [number, number] | false {
if (node.type === NodeTypes.ELEMENT && isNonStringifiable(node.tag)) {
return false
}
if (node.type === NodeTypes.TEXT_CALL) {
return [1, 0]
}

View File

@ -1,8 +1,10 @@
// Make a map and return a function for checking if a key
// is in that map.
//
// IMPORTANT: all calls of this function must be prefixed with /*#__PURE__*/
// So that rollup can tree-shake them if necessary.
/**
* Make a map and return a function for checking if a key
* is in that map.
* IMPORTANT: all calls of this function must be prefixed with
* \/\*#\_\_PURE\_\_\*\/
* So that rollup can tree-shake them if necessary.
*/
export function makeMap(
str: string,
expectsLowerCase?: boolean