tachybase_todo/packages/plugins/verification/src/client/ProviderOptions.tsx
chenos e6a2a292b3
feat: upgrade formily (#1880)
* feat: upgrade formily

* fix: upgrade @formily/json-schema

* fix: optimizing performance

* fix: performance code

* refactor: `React.memo` and `observer` component add `displayName` property

* fix: add cache to Schema.compile

* feat: 优化代码

* fix: 修复卡顿最终的问题

* Update SchemaComponentProvider.tsx

* feat: 再次优化代码

* feat: optimized code

---------

Co-authored-by: dream2023 <1098626505@qq.com>
2023-06-06 19:33:04 +08:00

32 lines
917 B
TypeScript

import React, { useEffect, useState } from 'react';
import { FormLayout } from '@formily/antd';
import { Field } from '@formily/core';
import { observer, RecursionField, Schema, useField, useForm } from '@formily/react';
import providerTypes from './providerTypes';
const Verification = observer(
(props) => {
const form = useForm();
const field = useField<Field>();
const [s, setSchema] = useState(new Schema({}));
useEffect(() => {
form.clearFormGraph('options.*');
setSchema(new Schema(providerTypes.get(form.values.type) || {}));
}, [form.values.type]);
return (
<FormLayout layout={'vertical'}>
<RecursionField
key={form.values.type || 'sms-aliyun'}
basePath={field.address}
onlyRenderProperties
schema={s}
/>
</FormLayout>
);
},
{ displayName: 'Verification' },
);
export default Verification;