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