Match-id-3eb8b4cc0e16ccf9c3931acedad4ed9abe2b52d9

This commit is contained in:
* 2022-04-27 15:48:51 +08:00 committed by *
parent 0043761609
commit 580beb2ca6
1 changed files with 9 additions and 5 deletions

View File

@ -1,13 +1,17 @@
import { travelVNodeTree } from '../../../../libs/horizon/src/renderer/vnode/VNodeUtils'; import { travelVNodeTree } from '../../../horizon/src/renderer/vnode/VNodeUtils';
import { VNode } from '../../../../libs/horizon/src/renderer/Types'; import { VNode } from '../../../horizon/src/renderer/vnode/VNode';
import { ClassComponent, FunctionComponent } from '../../../../libs/horizon/src/renderer/vnode/VNodeTags'; import { ClassComponent, FunctionComponent } from '../../../horizon/src/renderer/vnode/VNodeTags';
// 建立双向映射关系,当用户在修改属性值后,可以找到对应的 VNode // 建立双向映射关系,当用户在修改属性值后,可以找到对应的 VNode
const VNodeToIdMap = new Map<VNode, number>(); const VNodeToIdMap = new Map<VNode, number>();
const IdToVNodeMap = new Map<number, VNode>(); const IdToVNodeMap = new Map<number, VNode>();
let uid = 0; let uid = 0;
function generateUid () { function generateUid (vNode: VNode) {
const id = VNodeToIdMap.get(vNode);
if (id !== undefined) {
return id;
}
uid++; uid++;
return uid; return uid;
} }
@ -33,7 +37,7 @@ function parseTreeRoot(treeRoot: VNode) {
travelVNodeTree(treeRoot, (node: VNode) => { travelVNodeTree(treeRoot, (node: VNode) => {
const tag = node.tag; const tag = node.tag;
if (isUserComponent(tag)) { if (isUserComponent(tag)) {
const id = generateUid(); const id = generateUid(node);
result.push(id); result.push(id);
const name = node.type.name; const name = node.type.name;
result.push(name); result.push(name);