单击特定列中的字段时,链接到另一个列表不是完整列表,结果仅满足某些条件

问题描述

我正在使用

  "react": "^16.13.1","react-admin": "^3.6.0",

我想做的是,当单击特定列的字段(列表A)时,转到另一个列表B。

例如, 列表A具有列(ProductId,ProductModel,产品版本,有货,无货,废弃)

如果单击“有货”字段,则必须转到按该行的产品ID过滤且状态为“有货”的列表B。

如果单击“缺货”字段,则必须转到按该行的产品ID过滤且状态为“缺货”的列表B。

在“有货”和“无货”中使用参考字段是不合适的。因为没有针对他们的API。

并且我尝试了hitory.push('List B'),但它只显示了List B的完整列表。

我应该怎么办?

解决方法

这实际上记录在react-admin <List>组件文档的“链接到预过滤列表”(https://marmelab.com/react-admin/List.html#linking-to-a-pre-filtered-list)部分。

由于过滤器值是从URL提取的,因此可以通过设置查询参数链接到预先过滤的列表。

例如,如果您有标签列表,则可以为每个类别显示一个按钮,以链接到由该标签过滤的帖子列表:

import * as React from "react";
import Button from '@material-ui/core/Button';
import { Link } from 'react-router-dom';
import { stringify } from 'query-string';

const LinkToRelatedProducts = ({ record }) => {
    const translate = useTranslate();
    return record ? (
        <Button
            color="primary"
            component={Link}
            to={{
                pathname: '/posts',search: stringify({
                    page: 1,perPage: 25,sort: 'id',order: 'DESC',filter: JSON.stringify({ category_id: record.id }),}),}}
        >
            All posts with the category {record.name} ; 
        </Button>
    ) : null;
};

您可以使用此按钮,例如作为...的孩子。您还可以通过将过滤器值设置为{},使用该技术创建自定义菜单按钮以链接到未过滤的列表。

提示:您必须传递所有查询字符串参数-不仅仅是过滤器。这是react-admin的当前限制。