feat: memoized schema component
This commit is contained in:
parent
3c54393073
commit
9684e55f1a
@ -18,13 +18,29 @@ function toSchema(schema?: any) {
|
|||||||
return new Schema(schema);
|
return new Schema(schema);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function SchemaComponent(props: ISchemaFieldProps) {
|
const useMemoizedSchema = (schema) => {
|
||||||
|
return useMemo(() => toSchema(schema), []);
|
||||||
|
};
|
||||||
|
|
||||||
|
const RecursionSchemaComponent = (props: ISchemaFieldProps) => {
|
||||||
const { components, scope, schema, ...others } = props;
|
const { components, scope, schema, ...others } = props;
|
||||||
const s = useMemo(() => toSchema(schema), []);
|
|
||||||
console.log('SchemaComponent', { components, scope });
|
|
||||||
return (
|
return (
|
||||||
<SchemaComponentOptions inherit components={components} scope={scope}>
|
<SchemaComponentOptions inherit components={components} scope={scope}>
|
||||||
<RecursionField {...others} schema={s} />
|
<RecursionField {...others} schema={toSchema(schema)} />
|
||||||
</SchemaComponentOptions>
|
</SchemaComponentOptions>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
|
const MemoizedSchemaComponent = (props: ISchemaFieldProps) => {
|
||||||
|
const { schema, ...others } = props;
|
||||||
|
const s = useMemoizedSchema(schema);
|
||||||
|
return <RecursionSchemaComponent {...others} schema={s} />;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const SchemaComponent = (props: ISchemaFieldProps & { memoized?: boolean }) => {
|
||||||
|
const { memoized, ...others } = props;
|
||||||
|
if (memoized) {
|
||||||
|
return <MemoizedSchemaComponent {...others} />;
|
||||||
|
}
|
||||||
|
return <RecursionSchemaComponent {...others} />;
|
||||||
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user