From 31209fca6fa5803f71e1549d6f1f8603a95abaad Mon Sep 17 00:00:00 2001 From: Song Mingxu Date: Sun, 26 Jan 2025 19:45:26 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(core):=20=E4=BC=98=E5=8C=96=E5=BC=82?= =?UTF-8?q?=E6=AD=A5=E6=B8=B2=E6=9F=93=E5=99=A8=E6=B3=A8=E5=86=8C=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 当已存在占位渲染器时,在注册异步渲染器时删除占位渲染器 - 解决了在某些情况下(如设置了 visibleOn/hiddenOn 条件)无法渲染的问题 --- packages/amis-core/src/factory.tsx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/amis-core/src/factory.tsx b/packages/amis-core/src/factory.tsx index f263d9b62cb..4b6679c6fa9 100644 --- a/packages/amis-core/src/factory.tsx +++ b/packages/amis-core/src/factory.tsx @@ -262,6 +262,17 @@ export function registerRenderer(config: RendererConfig): RendererConfig { } else if (exists) { // 如果已经存在,合并配置,并用合并后的配置 Object.assign(exists, config); + + // 如果已经有了占位渲染器,在注册异步渲染器的时候把占位渲染器删掉 + // 否则会导致有些情况下无法渲染(设置了 visibleOn/hiddenOn 条件的无法渲染) + if ( + exists.component === Placeholder && + !config.component && + config.getComponent + ) { + delete exists.component; + delete exists.Renderer; + } renderer = exists; } From f06c88f313742c468844f7ee734640aeb8834eaa Mon Sep 17 00:00:00 2001 From: Song Mingxu Date: Sun, 26 Jan 2025 19:45:26 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E5=BB=BA=E8=AE=AE=E4=BF=AE=E6=94=B9=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/amis-core/src/factory.tsx | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/amis-core/src/factory.tsx b/packages/amis-core/src/factory.tsx index 4b6679c6fa9..a971b78f004 100644 --- a/packages/amis-core/src/factory.tsx +++ b/packages/amis-core/src/factory.tsx @@ -261,19 +261,17 @@ export function registerRenderer(config: RendererConfig): RendererConfig { ); } else if (exists) { // 如果已经存在,合并配置,并用合并后的配置 - Object.assign(exists, config); - - // 如果已经有了占位渲染器,在注册异步渲染器的时候把占位渲染器删掉 - // 否则会导致有些情况下无法渲染(设置了 visibleOn/hiddenOn 条件的无法渲染) + renderer = Object.assign(exists, config); + // 如果已存在的配置有占位组件,并且新的配置是异步渲染器,在把占位组件删除 + // 避免遇到设置了 visibleOn/hiddenOn 条件的 Schema 无法渲染的问题 if ( exists.component === Placeholder && !config.component && config.getComponent ) { - delete exists.component; - delete exists.Renderer; + let {component, Renderer, ...rest} = renderer; + renderer = {...rest, ...config}; } - renderer = exists; } renderer.weight = renderer.weight || 0; From 521aac1e409f3aded24c5e406242ee20049c425b Mon Sep 17 00:00:00 2001 From: 2betop <2698393+2betop@users.noreply.github.com> Date: Wed, 5 Feb 2025 15:07:36 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=8E=9F=E5=A7=8B=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E4=B9=9F=E9=9C=80=E8=A6=81=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/amis-core/src/factory.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/amis-core/src/factory.tsx b/packages/amis-core/src/factory.tsx index a971b78f004..3a3e5b42e4c 100644 --- a/packages/amis-core/src/factory.tsx +++ b/packages/amis-core/src/factory.tsx @@ -269,8 +269,8 @@ export function registerRenderer(config: RendererConfig): RendererConfig { !config.component && config.getComponent ) { - let {component, Renderer, ...rest} = renderer; - renderer = {...rest, ...config}; + delete renderer.component; + delete renderer.Renderer; } }