fix(compiler-vapor): don't cache `v-once`
This commit is contained in:
parent
76595deefb
commit
75314f2695
|
@ -5,16 +5,16 @@ import {
|
|||
transformChildren,
|
||||
transformComment,
|
||||
transformElement,
|
||||
transformOnce,
|
||||
transformText,
|
||||
transformVIf,
|
||||
transformVOnce,
|
||||
transformVText,
|
||||
} from '../../src'
|
||||
import { NodeTypes } from '@vue/compiler-core'
|
||||
|
||||
const compileWithVIf = makeCompile({
|
||||
nodeTransforms: [
|
||||
transformOnce,
|
||||
transformVOnce,
|
||||
transformVIf,
|
||||
transformText,
|
||||
transformElement,
|
||||
|
|
|
@ -14,7 +14,7 @@ import {
|
|||
} from './transform'
|
||||
import { type VaporCodegenResult, generate } from './generate'
|
||||
import { transformChildren } from './transforms/transformChildren'
|
||||
import { transformOnce } from './transforms/vOnce'
|
||||
import { transformVOnce } from './transforms/vOnce'
|
||||
import { transformElement } from './transforms/transformElement'
|
||||
import { transformVHtml } from './transforms/vHtml'
|
||||
import { transformVText } from './transforms/vText'
|
||||
|
@ -102,7 +102,7 @@ export function getBaseTransformPreset(
|
|||
): TransformPreset {
|
||||
return [
|
||||
[
|
||||
transformOnce,
|
||||
transformVOnce,
|
||||
transformVIf,
|
||||
transformVFor,
|
||||
transformSlotOutlet,
|
||||
|
|
|
@ -41,7 +41,7 @@ export { transformText } from './transforms/transformText'
|
|||
export { transformVBind } from './transforms/vBind'
|
||||
export { transformVHtml } from './transforms/vHtml'
|
||||
export { transformVOn } from './transforms/vOn'
|
||||
export { transformOnce } from './transforms/vOnce'
|
||||
export { transformVOnce } from './transforms/vOnce'
|
||||
export { transformVShow } from './transforms/vShow'
|
||||
export { transformVText } from './transforms/vText'
|
||||
export { transformVIf } from './transforms/vIf'
|
||||
|
|
|
@ -1,10 +1,4 @@
|
|||
import {
|
||||
type ElementNode,
|
||||
ElementTypes,
|
||||
NodeTypes,
|
||||
type RootNode,
|
||||
type TemplateChildNode,
|
||||
} from '@vue/compiler-dom'
|
||||
import { type ElementNode, ElementTypes, NodeTypes } from '@vue/compiler-dom'
|
||||
import {
|
||||
type NodeTransform,
|
||||
type TransformContext,
|
||||
|
@ -22,11 +16,7 @@ export const transformChildren: NodeTransform = (node, context) => {
|
|||
if (!isFragment && node.type !== NodeTypes.ELEMENT) return
|
||||
|
||||
for (const [i, child] of node.children.entries()) {
|
||||
const childContext = createContext(
|
||||
child,
|
||||
context as TransformContext<RootNode | ElementNode>,
|
||||
i,
|
||||
)
|
||||
const childContext = context.create(child, i)
|
||||
transformNode(childContext)
|
||||
|
||||
if (isFragment) {
|
||||
|
@ -96,11 +86,3 @@ function processDynamicChildren(context: TransformContext<ElementNode>) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
function createContext<T extends TemplateChildNode>(
|
||||
node: T,
|
||||
parent: TransformContext<RootNode | ElementNode>,
|
||||
index: number,
|
||||
): TransformContext<T> {
|
||||
return parent.create(node, index)
|
||||
}
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
import { NodeTypes, findDir } from '@vue/compiler-dom'
|
||||
import type { NodeTransform } from '../transform'
|
||||
|
||||
const seen = new WeakSet()
|
||||
|
||||
export const transformOnce: NodeTransform = (node, context) => {
|
||||
if (node.type === NodeTypes.ELEMENT && findDir(node, 'once', true)) {
|
||||
if (seen.has(node) || context.inVOnce /* || context.inSSR */) {
|
||||
return
|
||||
}
|
||||
seen.add(node)
|
||||
export const transformVOnce: NodeTransform = (node, context) => {
|
||||
if (
|
||||
// !context.inSSR &&
|
||||
node.type === NodeTypes.ELEMENT &&
|
||||
findDir(node, 'once', true)
|
||||
) {
|
||||
context.inVOnce = true
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue