微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何更改 React-Admin 过滤器

如何解决如何更改 React-Admin 过滤器

我是 React 新手,我的仪表板使用 react-admin。但是我在从我的 API 获取数据时遇到问题。

这是我的 API:

http://localhost:3333/verifications/browse?page=1&per_page=10&verification_level_id=2&verification_status_id=3

然后我看到了 react-admin 使用的端点,

http://localhost:3333/verifications/browse?filter=%7B%7D&range=%5B0%2C9%5D&sort=%5B%22id%22%2C%22ASC%22%5D

如何更改该端点?

解决方法

在请求发送前(以及收到后的响应)修改请求的地方是dataProvider。 React-admin 有 extensive documentation about it。如果你不了解 react-admin 中的 dataProviders,你会遇到很多拦截器,所以这应该是你的起点。

我相信您正在使用 ra-data-simplerest 作为示例的基础(或者是其他什么?),您可以根据以下内容将 getList 覆盖为更适合您需要的内容实施:

import { fetchUtils } from 'react-admin';
import { stringify } from 'query-string';

import simpleRestDataProvider from './simpleRestDataProvider';

const apiUrl = 'https://my.api.com/';
const httpClient = fetchUtils.fetchJson;

const dataProvider = {
    ...simpleRestDataProvider,getList: (resource,params) => {
        const { page,perPage } = params.pagination;
        const { field,order } = params.sort;
        const query = {
            sort: JSON.stringify([field,order]),range: JSON.stringify([(page - 1) * perPage,page * perPage - 1]),filter: JSON.stringify(params.filter),};
        const url = `${apiUrl}/${resource}?${stringify(query)}`;

        return httpClient(url).then(({ headers,json }) => ({
            data: json,total: parseInt(headers.get('content-range').split('/').pop(),10),}));
    },}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。