index.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import {ErrorBoundary, Loading, Modal, ModalBtnGroup, ReactModalStyle} from '@components';
  2. import {FC, Suspense} from 'react';
  3. import {useFormState} from './hooks';
  4. import UserModalInfo from './Info';
  5. import {FormProvider} from 'react-hook-form';
  6. const style: ReactModalStyle = {
  7. content: {
  8. width: '650px',
  9. height: '600px',
  10. },
  11. };
  12. type Props = {
  13. visible: boolean;
  14. id: string;
  15. onClose: () => void;
  16. onFetch: () => void;
  17. };
  18. const UserModal: FC<Props> = function({visible, onClose, onFetch, id}) {
  19. const [{isLoading, formInstance}, {onSubmit}] = useFormState({
  20. onClose, onFetch, id, visible,
  21. });
  22. return (
  23. <Modal
  24. visible={visible}
  25. style={style}
  26. title={`${id ? '修改' : '新增'}用户`}
  27. hideBtnGroup
  28. onSubmit={onSubmit}
  29. onClose={onClose}
  30. testId='user_add_modal'
  31. >
  32. <FormProvider {...formInstance}>
  33. <ErrorBoundary>
  34. <Suspense fallback={<Loading tip='正在获取用户信息' />}>
  35. <UserModalInfo id={id} />
  36. <ModalBtnGroup onClose={onClose} isLoading={isLoading} />
  37. </Suspense>
  38. </ErrorBoundary>
  39. </FormProvider>
  40. </Modal>
  41. );
  42. };
  43. export default UserModal;