Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 84x 84x 84x 84x 84x 1145x 543x 543x 529x 14x 14x 14x 14x 14x 11x 14x | import { NodeTransform } from '../transform' import { findDir, makeBlock } from '../utils' import { createCallExpression, createFunctionExpression, ElementTypes, MemoExpression, NodeTypes, PlainElementNode } from '../ast' import { WITH_MEMO } from '../runtimeHelpers' const seen = new WeakSet() export const transformMemo: NodeTransform = (node, context) => { if (node.type === NodeTypes.ELEMENT) { const dir = findDir(node, 'memo') if (!dir || seen.has(node)) { return } seen.add(node) return () => { const codegenNode = node.codegenNode || (context.currentNode as PlainElementNode).codegenNode if (codegenNode && codegenNode.type === NodeTypes.VNODE_CALL) { // non-component sub tree should be turned into a block if (node.tagType !== ElementTypes.COMPONENT) { makeBlock(codegenNode, context) } node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ dir.exp!, createFunctionExpression(undefined, codegenNode), `_cache`, String(context.cached++) ]) as MemoExpression } } } } |