index.tsx 1.2 KB

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