From 852d8822ee4c66f5643b39d1e05ec4571768ba25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=A3=E5=BD=AC?= Date: Tue, 28 Jul 2020 21:44:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E7=BB=84=E4=BB=B6=E6=97=B6=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=81=9A=E7=84=A6=E5=88=B0=E7=82=B9=E4=B8=AD=E7=9A=84=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/editor-preset-vision/src/editor.ts | 7 ++-- .../rax-simulator-renderer/src/renderer.ts | 39 +++++++++---------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/packages/editor-preset-vision/src/editor.ts b/packages/editor-preset-vision/src/editor.ts index 9b155bba1..b83fbc48f 100644 --- a/packages/editor-preset-vision/src/editor.ts +++ b/packages/editor-preset-vision/src/editor.ts @@ -56,7 +56,7 @@ function upgradePropsReducer(props: any) { type: 'JSSlot', title: (val.value.props as any)?.slotTitle, name: (val.value.props as any)?.slotName, - value: val.value.children + value: val.value.children, }; } else { val = val.value; @@ -126,7 +126,6 @@ designer.addPropsReducer((props, node) => { return props; }, TransformStage.Init); - function filterReducer(props: any, node: Node): any { const filters = node.componentMeta.getMetadata().experimental?.filters; if (filters && filters.length) { @@ -169,7 +168,7 @@ function compatiableReducer(props: any) { slotName: val.name, }, }, - } + }; } // 为了能降级到老版本,建议在后期版本去掉以下代码 // if (isJSExpression(val) && !val.events) { @@ -264,7 +263,7 @@ skeleton.add({ props: { condition: () => { return designer.dragon.dragging && !getTreeMaster(designer).hasVisibleTreeBoard(); - } + }, }, content: OutlineBackupPane, }); diff --git a/packages/rax-simulator-renderer/src/renderer.ts b/packages/rax-simulator-renderer/src/renderer.ts index aed0dd614..be68ca9ca 100644 --- a/packages/rax-simulator-renderer/src/renderer.ts +++ b/packages/rax-simulator-renderer/src/renderer.ts @@ -386,35 +386,34 @@ function getClosestNodeInstance(from: any, specId?: string): NodeInstance | return null; } -function matcher(parent: any) { - return parent.__isReactiveComponent && parent.props.componentId; +function isValidDesignModeRaxComponentInstance( + raxComponentInst: any, +): raxComponentInst is { + props: { + _leaf: Exclude['node'], null | undefined>; + }; +} { + const leaf = raxComponentInst?.props?._leaf; + return leaf && typeof leaf === 'object' && leaf.isNode; } function getNodeInstance(dom: HTMLElement): NodeInstance | null { const INTERNAL = '_internal'; + let instance = Instance.get(dom); - let node; while (instance && instance[INTERNAL]) { - if (matcher(instance)) { - node = instance; - break; + if (isValidDesignModeRaxComponentInstance(instance)) { + return { + nodeId: instance.props._leaf.getId(), + instance: instance, + node: instance.props._leaf, + }; } + instance = instance[INTERNAL].__parentInstance; } - if (!node) { - return null; - } - return { - nodeId: node.props.componentId, - instance: node, - }; - // return parent; - // const instance = fiberNode.stateNode; - // if (instance) { - // console.log(instance); - // } - // return getNodeInstance(fiberNode.return); - // return instance; + + return null; } function checkInstanceMounted(instance: any): boolean {