react-admin分页不能如期进行。

问题描述 投票:0回答:1

创建了一个简单的react-admin应用程序,它从一个自定义的rest api中提取。第一个页面被显示(默认每页10个。点击 "下一步 "按钮,什么都没有发生(仍然将page=1发送到api)。点击第二次,页面前进到第2页(page=2),正如预期的那样。点击第三次,又回到第1页(page=1)。

然后,如果你点击第四次,就会进入第2页,再点击,进入第3页,再点击,回到第1页。每一轮都以这种模式继续下去,在回到页面之前,再进一步得到一页。

当我在react-admin应用之外调用自定义API时,能够得到正确的结果。我创建了一个自定义的dataProvider来与API进行通信,也许getList函数有问题,但我绝对可以看到传递到这个函数中的页码,而且它与奇数结果一致(第1页,然后是1、2、1,然后是1、2、3、1等。自定义API期望分页的查询字符串如下: ?limit=10&page=1&orderBy=id&orderDir=ASC。

原版的 react-admin 教程返回的是 10 条记录。当我把页面限制设置为5条时,似乎确实可以正常工作(在第一次点击 "下一步 "时前进到第2页),但没有更多的记录,很难完全测试。但我猜测是可以工作的,因为这很可能是我的代码或API的问题(虽然我说过,API在react应用之外工作)。

这是我的getList函数。

const httpClient = (url, options = {}) => {
  if (!options.headers) {
    options.headers = new Headers({ Accept: 'application/json' });
  }
  const tokens = localStorage.getItem('tokens');
  const objToken = JSON.parse(tokens);

  options.user = {
    authenticated: true,
    token: `Bearer ${objToken.accessToken}`
  };
  return fetchUtils.fetchJson(url, options);
};

export default {
  getList: (resource, params) => {
    const { page, perPage } = params.pagination;
    const { field, order } = params.sort;
    const { q } = params.filter;

    // Pagination and sort
    let query = `limit=${perPage}&page=${page}&orderBy=${field}&orderDir=${order}`;
    // Filter?
    let useResource = '';
    let useFilter = '';

    if (q == null) {
      // No filter: Use <resource>/ url
      useResource = resource;
    } else {
      // Filter: Use append url with /find
      useResource = `${resource}/find`;
      useFilter = q;
      console.log('useFilter: ', useFilter)
      query += `&searchText=${useFilter}`;
    }

    const url = `${apiUrl}/${useResource}?${query}`;
    return httpClient(url)
      .then(({ json }) => ({
        data: json.results,
        total: json.totalRows,
      }));
  }, ...

这是问题的截图

enter image description here

EDIT:看起来是发送了正确的查询字符串,但是在第一次点击Next page(page=2)之后,page=1又自动发送,回到了第一页。以后的Next点击似乎也是如此。谢谢你帮助一个新手。但我就是想不通,为什么返回第1页的时候会有额外的调用。

javascript reactjs rest react-admin
1个回答
0
投票

在react-admin 3.4.3中修正。

我使用npm更新,分页工作正常。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.