【问题标题】:How to combine create and edit page in react-admin如何在 react-admin 中结合创建和编辑页面
【发布时间】:2019-11-29 14:48:54
【问题描述】:

我是 react 和 react-admin 的新手,但我现在在我们的项目中使用它,一切都很好,但有一件事我不知道如何制作。在我们的应用程序中。创建和编辑页面几乎相同,唯一的区别是在编辑视图中禁用了某些字段,所以我想结合创建和编辑,有没有关于它的文档。我搜索了它,但这似乎不是一个简单的方法,如果可以获得一些示例代码,我们将不胜感激。谢谢!!!

嗨@Mads,谢谢你的回答,我在这里更新问题。我的意思是上次,我也创建了一个单独的表单,就像你所做的那样,我直接插入组件如下(例如<Form/>)。它会得到一个错误:标签上的 prop 'save' 的无效值 我只是好奇这种方式有什么区别({form('edit')}

<Edit {...props} undoable={false} style={{width: '100%'}}> <Form/> </Edit>

【问题讨论】:

    标签: react-admin


    【解决方案1】:

    你可以这样做:

    const form = type => (
        <SimpleForm>
            <TextInput source="name"/>
            {type === 'create' ? <TextInput source="created_at"/> : ''}
        </SimpleForm>
    );
    
    export const EditView = ({classes, ...props}) => {
        return (
            <Edit {...props} undoable={false} style={{width: '100%'}}>
                {form('edit')}
            </Edit>
        );
    };
    
    export const CreateView = ({classes, ...props}) => {
        return (
            <Edit {...props} undoable={false} style={{width: '100%'}}>
                {form('create')}
            </Edit>
        );
    };
    

    【讨论】:

    • 嗨@Mads,谢谢你的回答,它正在工作,我能再问你一个问题吗,我的代码如下:
      功能正常但收到一个警告:
      标签上的 prop 'save' 的无效值. 你的方法 {form('edit')} 有什么不同吗
    • 不确定我是否理解您的要求...您能否格式化答案中的代码以提高可读性?
    • 现在我明白你的意思了 :-) 我不是 React 专家,所以解释可能有问题,但是:我的示例调用了一个函数,它返回一个组件( ) 您的示例尝试将其直接用作 React 组件。
    【解决方案2】:

    我有过类似的挣扎,这就是我最终做的:

    // This is the reusable form component
    const CategoryForm = (props) => (
      <SimpleForm {...props}>
        <TextInput source="name" label="Nome" />
        {props.type === "edit" && <p>This element only shows in edit mode</p>}
      </SimpleForm>
    );
    
    // Edit View Component
    export const CategoryEdit = (props) => (
      <Edit {...props}>
        {/* Reusable form component with type prop set to 'edit' */}
        <CategoryForm type="edit" />
      </Edit>
    );
    
    // Create View Component
    export const CategoryCreate = (props) => (
      <Create {...props}>
        {/* Reusable form component with type prop set to 'create' */}
        <CategoryForm type="create" />
      </Create>
    );
    

    【讨论】:

    • 太吓人了,我已经有这个完全相同的问题大约一个小时了,这显然与您发布此答案的时间大致相同,好像我已经准备好找到解决方案一样。谢谢你:)
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签