fix(transform): transform should still apply even when node is removed

This commit is contained in:
Evan You 2019-09-22 17:02:32 -04:00
parent 3a177a18d2
commit 9c01e0bf0d
2 changed files with 14 additions and 9 deletions

View File

@ -287,16 +287,20 @@ function genIfBranch(
context: CodegenContext
) {
if (condition) {
const { push, indent, deindent, newline } = context
// v-if or v-else-if
context.push(`(${condition.content})`, condition)
context.push(`?`)
push(`(${condition.content})`, condition)
indent()
push(`? `)
genChildren(children, context)
context.push(`:`)
newline()
push(`: `)
if (nextIndex < branches.length) {
genIfBranch(branches[nextIndex], branches, nextIndex + 1, context)
} else {
context.push(`null`)
}
deindent()
} else {
// v-else
__DEV__ && assert(nextIndex === branches.length)

View File

@ -132,12 +132,13 @@ function traverseNode(
for (let i = 0; i < nodeTransforms.length; i++) {
const plugin = nodeTransforms[i]
plugin(node, context)
if (!context.currentNode) {
return
} else {
// node may have been replaced
node = context.currentNode
}
// node may have been replaced
node = context.currentNode || node
}
if (!context.currentNode) {
// node was removed
return
}
// further traverse downwards