type: NodeTypes.JS_CACHE_EXPRESSION
index: number
value: JSChildNode
- isVNode: boolean
+ isVOnce: boolean
}
export interface MemoExpression extends CallExpression {
export function createCacheExpression(
index: number,
value: JSChildNode,
- isVNode: boolean = false,
+ isVOnce: boolean = false,
): CacheExpression {
return {
type: NodeTypes.JS_CACHE_EXPRESSION,
index,
value,
- isVNode,
+ isVOnce,
loc: locStub,
}
}
function genCacheExpression(node: CacheExpression, context: CodegenContext) {
const { push, helper, indent, deindent, newline } = context
push(`_cache[${node.index}] || (`)
- if (node.isVNode) {
+ if (node.isVOnce) {
indent()
push(`${helper(SET_BLOCK_TRACKING)}(-1),`)
newline()
}
push(`_cache[${node.index}] = `)
genNode(node.value, context)
- if (node.isVNode) {
+ if (node.isVOnce) {
push(`,`)
newline()
push(`${helper(SET_BLOCK_TRACKING)}(1),`)