import { createForm } from '@formily/core'; import { useField } from '@formily/react'; import { Spin } from 'antd'; import React, { createContext, useContext, useEffect, useMemo } from 'react'; import { RecordProvider } from '../record-provider'; import { BlockProvider, useBlockRequestContext } from './BlockProvider'; export const DetailsBlockContext = createContext({}); const InternalDetailsBlockProvider = (props) => { const { action, readPretty } = props; const field = useField(); const form = useMemo( () => createForm({ readPretty, }), [], ); const { resource, service } = useBlockRequestContext(); if (service.loading && !field.loaded) { return ; } field.loaded = true; return ( {props.children} ); }; export const DetailsBlockProvider = (props) => { return ( ); }; export const useDetailsBlockContext = () => { return useContext(DetailsBlockContext); }; export const useDetailsBlockProps = () => { const ctx = useDetailsBlockContext(); useEffect(() => { if (!ctx.service.loading) { ctx.form.setValues(ctx.service?.data?.data?.[0] || {}); } }, [ctx.service.loading]); return { form: ctx.form, }; };