我在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>功能?
来自 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)
| 归档时间: |
|
| 查看次数: |
2006 次 |
| 最近记录: |