1

版本:(Next反应管理员)

资源ClassesStudents.

“学生”有一个“班级”的外键:class_id.

因此,在List我们Classes的每一行(班级)中都有一个按钮“查看/编辑班级学生”。

当我们点击这个按钮时,我们有这个代码:

<Button
  label={'View/Edit Students of Class'}
  onClick={(e) => {
    localStorage.setItem('classId', record.id);
    history.push({
        pathname: 'students',
        search: stringify({
            page: 1,
            perPage: 25,
            sort: 'createdOn',
            order: 'DESC',
            classId: record.id,
        }),
    })
  }}
>

这个想法是我们需要以某种方式在“Student”的所有 CRUD 操作中获取一个“classId”值,以便我们通过 List 中的“classId”进行过滤,并将这个 classId 用作 CREATE 中的禁用字段。

我尝试了 2 种方法:localStorage或者query params您可以在代码中看到。

但是这些都不好,不能按预期工作(当 CREATE 重定向时查询参数丢失等)

有任何想法吗?

4

1 回答 1

1

You should link to a filtered list, something like

<Button
  label={'View/Edit Students of Class'}
  onClick={(e) => {
    localStorage.setItem('classId', record.id);
    history.push({
        pathname: 'students',
        search: stringify({
            page: 1,
            perPage: 25,
            sort: 'createdOn',
            order: 'DESC',
            filter: { classId: record.id },
        }),
    })
  }}
>

This is done in the demo, see https://github.com/marmelab/admin-on-rest-demo/blob/master/src/categories/LinkToRelatedProducts.js

于 2018-04-06T21:45:55.330 回答