diff --git a/frameworks/bridge/declarative_frontend/ark_node/src/builder_node.ts b/frameworks/bridge/declarative_frontend/ark_node/src/builder_node.ts index 3c1a926d6701128535bc2d9465cb1057bf83de03..5943882d06a790737461be59b64dbc78f611de53 100644 --- a/frameworks/bridge/declarative_frontend/ark_node/src/builder_node.ts +++ b/frameworks/bridge/declarative_frontend/ark_node/src/builder_node.ts @@ -95,7 +95,7 @@ class JSBuilderNode extends BaseNode implements IDisposable { private allowFreezeWhenInactive: boolean; private parentallowFreeze: boolean; private isFreeze: boolean; - public __parentViewOfBuildNode?: ViewBuildNodeBase; + public __parentViewOfBuildNode?: WeakRef; private updateParams_: Object; private activeCount_: number; constructor(uiContext: UIContext, options?: RenderOptions) { @@ -114,7 +114,7 @@ class JSBuilderNode extends BaseNode implements IDisposable { } public findProvidePU__(providePropName: string): ObservedPropertyAbstractPU | undefined { if (this.__enableBuilderNodeConsume__ && this.__parentViewOfBuildNode) { - return this.__parentViewOfBuildNode.findProvidePU__(providePropName); + return this.__parentViewOfBuildNode?.deref()?.findProvidePU__(providePropName); } return undefined; } @@ -244,10 +244,10 @@ class JSBuilderNode extends BaseNode implements IDisposable { this.frameNode_.setBuilderNode(this); let id = this.frameNode_.getUniqueId(); if (this.id_ && this.id_ !== id) { - this.__parentViewOfBuildNode?.removeChildBuilderNode(this.id_); + this.__parentViewOfBuildNode?.deref()?.removeChildBuilderNode(this.id_); } this.id_ = id; - this.__parentViewOfBuildNode?.addChildBuilderNode(this); + this.__parentViewOfBuildNode?.deref()?.addChildBuilderNode(this); FrameNodeFinalizationRegisterProxy.rootFrameNodeIdToBuilderNode_.set(this.frameNode_.getUniqueId(), new WeakRef(this.frameNode_)); __JSScopeUtil__.restoreInstanceId(); } diff --git a/frameworks/bridge/declarative_frontend/ark_node/src/common.ts b/frameworks/bridge/declarative_frontend/ark_node/src/common.ts index d45089877f7e2b21bb7e1f9088dc867639786c66..9999bd45fe7688ba7274a75e350da4e37cb97a2e 100644 --- a/frameworks/bridge/declarative_frontend/ark_node/src/common.ts +++ b/frameworks/bridge/declarative_frontend/ark_node/src/common.ts @@ -27,7 +27,7 @@ function __establishConnection__(allow: boolean, parentView: ViewBuildNodeBase | if (builderNode.getInheritFreeze()) { builderNode.setAllowFreezeWhenInactive(allow); } - builderNode.__parentViewOfBuildNode = parentView; + builderNode.__parentViewOfBuildNode = new WeakRef(parentView); parentView?.addChildBuilderNode(builderNode); }); return true; diff --git a/frameworks/bridge/declarative_frontend/ark_node/src/render_node.ts b/frameworks/bridge/declarative_frontend/ark_node/src/render_node.ts index 94393c843d73f64d1ef7156d9546812cbcfca27e..b8d4c654e8c25a07fccdae3b50ed622abade58d7 100644 --- a/frameworks/bridge/declarative_frontend/ark_node/src/render_node.ts +++ b/frameworks/bridge/declarative_frontend/ark_node/src/render_node.ts @@ -166,7 +166,6 @@ class LengthMetrics { } declare interface Resource {} -declare type BusinessError = any declare enum Color { White, diff --git a/frameworks/bridge/declarative_frontend/engine/jsXNode.js b/frameworks/bridge/declarative_frontend/engine/jsXNode.js index 6ccca88eb8815b112c785825efff1259f9a50e75..450f7c32eb02392537e3c1dcaaa5f6ed0c6179da 100644 --- a/frameworks/bridge/declarative_frontend/engine/jsXNode.js +++ b/frameworks/bridge/declarative_frontend/engine/jsXNode.js @@ -184,7 +184,7 @@ class JSBuilderNode extends BaseNode { } findProvidePU__(providePropName) { if (this.__enableBuilderNodeConsume__ && this.__parentViewOfBuildNode) { - return this.__parentViewOfBuildNode.findProvidePU__(providePropName); + return this.__parentViewOfBuildNode?.deref()?.findProvidePU__(providePropName); } return undefined; } @@ -315,10 +315,10 @@ class JSBuilderNode extends BaseNode { this.frameNode_.setBuilderNode(this); let id = this.frameNode_.getUniqueId(); if (this.id_ && this.id_ !== id) { - this.__parentViewOfBuildNode?.removeChildBuilderNode(this.id_); + this.__parentViewOfBuildNode?.deref()?.removeChildBuilderNode(this.id_); } this.id_ = id; - this.__parentViewOfBuildNode?.addChildBuilderNode(this); + this.__parentViewOfBuildNode?.deref()?.addChildBuilderNode(this); FrameNodeFinalizationRegisterProxy.rootFrameNodeIdToBuilderNode_.set(this.frameNode_.getUniqueId(), new WeakRef(this.frameNode_)); __JSScopeUtil__.restoreInstanceId(); } @@ -3288,7 +3288,7 @@ function __establishConnection__(allow, parentView, builderIds) { if (builderNode.getInheritFreeze()) { builderNode.setAllowFreezeWhenInactive(allow); } - builderNode.__parentViewOfBuildNode = parentView; + builderNode.__parentViewOfBuildNode = new WeakRef(parentView); parentView?.addChildBuilderNode(builderNode); }); return true;