Нумерация по реакции-админ не работает, как ожидалось - PullRequest
0 голосов
/ 21 апреля 2020

Создано простое приложение реакции-администратора, которое извлекает из пользовательского API отдыха. Отображается первая страница (по умолчанию 10 на страницу. Нажмите кнопку Далее, и ничего не происходит (по-прежнему отправляет страницу = 1 в API). Нажмите второй раз, и страница перейдет на страницу 2 (страница = 2), как и ожидалось. Нажмите кнопку в третий раз и возвращается на страницу 1 (страница = 1).

Затем, если вы щелкнете в четвертый раз, он перейдет на страницу 2, затем снова щелкните, перейдет на страницу 3, затем снова щелкните, вернется к страница 1. Это продолжается с этим шаблоном, каждый раунд, продвигаясь на одну страницу дальше, прежде чем вернуться на страницу.

Я могу получить правильные результаты при вызове пользовательского API за пределами приложенияact-admin. Я создал собственный dataProvider для связи с API, и, возможно, есть проблема с функцией getList, но я определенно вижу номер страницы, переданный в эту функцию, и он совпадает с нечетными результатами (страница 1, затем 1, 2, 1 , затем 1, 2, 3, 1 и т. д. c. Пользовательский API ожидает следующую строку запроса для разбивки на страницы:? limit = 10 & page = 1 & orderBy = id & orderDir = AS C

Оригинал учебник act-admin возвращает 10 записей. Когда я устанавливаю ограничение на 5 страниц, кажется, что оно работает нормально (переход на страницу 2 при первом нажатии кнопки «Далее»), но без дополнительных записей его сложно полностью протестировать. Но я предполагаю, что это сработает, поскольку это, безусловно, проблема с моим кодом или API (хотя, как я уже сказал, API работает вне приложения реагирования).

Вот моя функция 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

РЕДАКТИРОВАТЬ: похоже, правильная строка запроса отправляется, но сразу после первый щелчок на следующей странице (страница = 2), страница = 1 автоматически отправляется снова, возвращаясь на первую страницу. Похоже, это относится и к последующим кликам Next. Спасибо за помощь новичку ie. Но я просто не могу понять, почему выполняются дополнительные звонки, возвращаясь к странице 1.

1 Ответ

0 голосов
/ 27 апреля 2020

Исправлено в response-admin 3.4.3.

Я обновил с помощью npm Обновление и нумерация страниц работает правильно.

enter image description here

...