From 4e4e835325ffc48d1dbce8f5d2f2d63ed5df9674 Mon Sep 17 00:00:00 2001 From: Yanzhen Yu Date: Sun, 4 Sep 2022 23:18:49 +0800 Subject: [PATCH] fix: skip non validate field --- .../_internal/ImplWrapper/UnmountImplWrapper.tsx | 1 + packages/runtime/src/traits/core/Validation.tsx | 8 ++++++++ packages/runtime/src/utils/initStateAndMethod.ts | 12 ++++++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/runtime/src/components/_internal/ImplWrapper/UnmountImplWrapper.tsx b/packages/runtime/src/components/_internal/ImplWrapper/UnmountImplWrapper.tsx index fd24809c..83a81274 100644 --- a/packages/runtime/src/components/_internal/ImplWrapper/UnmountImplWrapper.tsx +++ b/packages/runtime/src/components/_internal/ImplWrapper/UnmountImplWrapper.tsx @@ -52,6 +52,7 @@ export const UnmountImplWrapper = React.forwardRef { const validator = validatorMap[name]; + if (!validator) { + return { + name, + isInvalid: false, + errors: [], + }; + } + const { value, rules } = validator; const errors = rules .map(rule => { diff --git a/packages/runtime/src/utils/initStateAndMethod.ts b/packages/runtime/src/utils/initStateAndMethod.ts index 8a1e0c78..029eccb4 100644 --- a/packages/runtime/src/utils/initStateAndMethod.ts +++ b/packages/runtime/src/utils/initStateAndMethod.ts @@ -13,9 +13,15 @@ import { JSONSchema7Object } from 'json-schema'; export function initStateAndMethod( registry: RegistryInterface, stateManager: StateManagerInterface, - components: RuntimeComponentSchema[] + components: RuntimeComponentSchema[], + mark?: true ) { - components.forEach(c => initSingleComponentState(registry, stateManager, c)); + components.forEach(c => { + initSingleComponentState(registry, stateManager, c); + if (mark) { + stateManager.initSet.add(c.id); + } + }); } export function initSingleComponentState( @@ -27,8 +33,6 @@ export function initSingleComponentState( return false; } - stateManager.initSet.add(c.id); - let state = {}; c.traits.forEach(t => { const tSpec = registry.getTrait(t.parsedType.version, t.parsedType.name).spec;