// 修改弹窗 import React, { useRef, useEffect } from 'react'; import { createForm, onFieldReact, FormPathPattern, Field } from '@formily/core'; import { getCoinTypeList } from '@/services/recharge/coinType'; import { FormProvider, createSchemaField } from '@formily/react'; import Modal, { ModalProps } from '@/components/Modal'; import { Form, FormItem, Input, Select } from '@formily/antd'; import { action } from '@formily/reactive'; interface EditWalletModalPropsType extends ModalProps { editModalData: any; onOk: (val: any) => void; onCancel: () => void; } const SchemaField = createSchemaField({ components: { FormItem, Input, Select, }, }); const EditWalletModal = ({ onOk, onCancel, editModalData, ...rest }: EditWalletModalPropsType) => { const useAsyncDataSource = ( pattern: FormPathPattern, service: (field: Field) => Promise<{ label: string; value: any }[]>, ) => { onFieldReact(pattern, (field) => { service(field).then( action.bound((data) => { field.dataSource = data; }), ); }); }; const form = createForm({ effects: () => { // eslint-disable-next-line react-hooks/rules-of-hooks useAsyncDataSource('name', async (field) => { const list = await getCoinTypeList({ page: 1, size: 10 }); const option = []; for (let index = 0; index < list.items.length; index++) { const element = list.items[index]; const item = { label: element.name, value: element.name, }; option.push(item); } return option; }); }, }); useEffect(() => { form.setInitialValues(editModalData); }); const handleOk = () => { form.submit(async () => { const formState = form.getFormState(); onOk(formState.values); }); }; const handleCancel = () => { onCancel(); }; return (
); }; export default EditWalletModal;