From ca90a221a724a4fd4aa25fd7e777d91eff5b96c2 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Thu, 12 Nov 2026 21:27:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20container-custom=20=E4=B9=9F=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20bindings=20=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/render-vue/src/props.ts | 2 ++ packages/render/src/core/container.ts | 5 +++++ packages/render/src/core/custom.ts | 6 ++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/render-vue/src/props.ts b/packages/render-vue/src/props.ts index faea9bd..d15ad6c 100644 --- a/packages/render-vue/src/props.ts +++ b/packages/render-vue/src/props.ts @@ -94,6 +94,8 @@ export interface ConatinerCustomProps extends ContainerProps { render?: CustomContainerRenderFn; /** 自定义容器事件传递函数 */ propagate?: CustomContainerPropagateFn; + /** 更新绑定,当数组中的任意一项更新时将会自动更新此元素的渲染 */ + bindings?: readonly unknown[]; } export interface GL2Props extends BaseProps {} diff --git a/packages/render/src/core/container.ts b/packages/render/src/core/container.ts index f568f89..b71502f 100644 --- a/packages/render/src/core/container.ts +++ b/packages/render/src/core/container.ts @@ -188,6 +188,11 @@ export class CustomContainer extends Container { this.setPropagateFn(nextValue); return true; } + case 'bindings': { + if (!this.assertType(nextValue, Array, key)) return false; + this.update(); + return true; + } } return super.handleProps(key, prevValue, nextValue); } diff --git a/packages/render/src/core/custom.ts b/packages/render/src/core/custom.ts index 17ae9cd..813e9aa 100644 --- a/packages/render/src/core/custom.ts +++ b/packages/render/src/core/custom.ts @@ -32,14 +32,16 @@ export class CustomRenderItem extends RenderItem { nextValue: any ): boolean { switch (key) { - case 'render': + case 'render': { if (!this.assertType(nextValue, 'function', key)) return false; this.setRenderFn(nextValue); return true; - case 'bindings': + } + case 'bindings': { if (!this.assertType(nextValue, Array, key)) return false; this.update(); return true; + } } return false; }