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; }