tachybase_todo/packages/samples/custom-signup-page/src/client/index.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

37 lines
971 B
TypeScript

import { useForm } from '@formily/react';
import { RouteSwitchContext, SignupPage, useSignup } from '@nocobase/client';
import React, { useContext } from 'react';
const useCustomSignup = () => {
const { run } = useSignup();
const form = useForm();
return {
async run() {
console.log('useCustomSignup');
form.setValuesIn('url', 'bb');
await run();
},
};
};
const CustomSignupPage = (props) => {
return (
<div>
<div>Custom sign up page</div>
<SignupPage {...props} scope={{ useSignup: useCustomSignup }} />
</div>
);
};
const CustomSignupPageMemo = React.memo((props) => {
const ctx = useContext(RouteSwitchContext);
return (
<RouteSwitchContext.Provider value={{ ...ctx, components: { ...ctx.components, SignupPage: CustomSignupPage } }}>
{props.children}
</RouteSwitchContext.Provider>
);
});
CustomSignupPageMemo.displayName = 'CustomSignupPageMemo';
export default CustomSignupPageMemo;