如何在不使用 <SimpleForm> 的情况下访问编辑功能中的记录?

Max*_*Max 0 react-admin

我在App.tsx<Ressource>中声明如下:

<Resource name="myresource" list={ListGuesser} edit={GenericEdit}/>
Run Code Online (Sandbox Code Playgroud)

GenericEdit的代码:

const GenericEdit = function (props) {
    console.log('props', props);
    console.log('useResourceContext()', useResourceContext());
    console.log('useRecordContext()', useRecordContext());
    return (
        <>
            <Edit {...props}>
                <SimpleForm>
                    <TextInput disabled label="Id" source="id" />
                    <TextInput label="Name" source="name" />
                </SimpleForm>
            </Edit>
        </>)
};
export default GenericEdit;
Run Code Online (Sandbox Code Playgroud)

默认<Edit><SimpleForm>设置效果很好(即记录数据在表单内呈现),但是我希望能够以record自己的方式使用数据:

  • props仅包含元数据(URL路径、资源类型等...)+记录id,但没有其他记录数据
  • useResourceContext()返回资源类型(在我的例子中为“campaign”)
  • useRecordContext()什么也不返回

问:如何在编辑功能 ( ) 中访问记录数据,GenericEdit而不必依赖默认<SimpleForm>功能?

Max*_*Max 5

来自 React 管理员支持的回答,这对我有用

编辑组件获取数据并将其传递给其子组件。为了访问获取数据,您必须添加中间组件并使用挂钩useRecordContext

const MyForm = props => {
    const record = useRecordContext(props);
    console.log({ record });
    return (
        <>
            {/* We can still use the built-in React Admin */}
            <SimpleForm {...props}>
                <TextInput source="id" />
            </SimpleForm>
            {/* Or use something custom */}
            <div>{JSON.stringify(record)}</div>
        </>
    );
};

const GenericEdit = props => (
    // Here, the data hasn't been fetched yet 
    <Edit {...props} >
        <MyForm />
    </Edit>
);
export default GenericEdit;
Run Code Online (Sandbox Code Playgroud)