From bf6d64cce1add57fd490f9543fceb99b83f9bc6d Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Wed, 4 Nov 2026 21:39:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20custom=20=E7=9A=84=20binding=20=E5=8F=82?= =?UTF-8?q?=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/custom.ts | 18 ++---------------- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/packages/render-vue/src/props.ts b/packages/render-vue/src/props.ts index 27e0f9f..e1aef37 100644 --- a/packages/render-vue/src/props.ts +++ b/packages/render-vue/src/props.ts @@ -84,7 +84,7 @@ export interface CustomProps extends BaseProps { /** 自定义的渲染函数 */ render?: CustomRenderFunction; /** 更新绑定,当数组中的任意一项更新时将会自动更新此元素的渲染 */ - bindings?: Ref[]; + bindings?: readonly unknown[]; } export interface ContainerProps extends BaseProps {} diff --git a/packages/render/src/core/custom.ts b/packages/render/src/core/custom.ts index 4401636..17ae9cd 100644 --- a/packages/render/src/core/custom.ts +++ b/packages/render/src/core/custom.ts @@ -1,7 +1,6 @@ import { RenderItem } from './item'; import { MotaOffscreenCanvas2D } from './canvas2d'; import { CustomRenderFunction } from './types'; -import { Ref } from 'vue'; export class CustomRenderItem extends RenderItem { renderFn: CustomRenderFunction; @@ -29,7 +28,7 @@ export class CustomRenderItem extends RenderItem { protected handleProps( key: string, - prevValue: any, + _prevValue: any, nextValue: any ): boolean { switch (key) { @@ -39,20 +38,7 @@ export class CustomRenderItem extends RenderItem { return true; case 'bindings': if (!this.assertType(nextValue, Array, key)) return false; - if (nextValue !== prevValue) { - this.update(); - } else if (nextValue.length !== prevValue.length) { - this.update(); - } else { - const arr: Ref[] = nextValue as Ref[]; - const prev: Ref[] = prevValue as Ref[]; - for (let i = 0; i < nextValue.length; i++) { - if (arr[i].value !== prev[i].value) { - this.update(); - break; - } - } - } + this.update(); return true; } return false;