Можно ли получить данные текущей страницы после повторного заказа в Material-Table? - PullRequest
2 голосов
/ 08 октября 2019

Мне нужно получить данные текущей страницы даже после сортировки. Я могу получить данные текущей страницы после изменения нумерации страниц, но не после сортировки. Это возможно? onOrderChange возвращает только идентификатор столбца и направление.

Существует ли метод, который возвращает отсортированный массив?

const [currentPage, setCurrentPage] = useState(0);
const [rowsPerPage, setRowsPerPage] = useState(5);

const currentPageItems = useMemo(() => removeData.slice(currentPage * rowsPerPage, currentPage * rowsPerPage + rowsPerPage),
    [removeData, currentPage, rowsPerPage]);

return (
    <MaterialTable
        data={remoteData}
        options={{
          pageSize: 5,
          pageSizeOptions: [5, 10, 25],
          sorting: true,
        }}
        onChangePage={setCurrentPage}
        onChangeRowsPerPage={setRowsPerPage}
    />
)

1 Ответ

1 голос
/ 08 октября 2019

Я обнаружил, что могу получить доступ к отсортированным данным через tableRef.

const tableRef = useRef(null);
const [currentPage, setCurrentPage] = useState(0);
const [rowsPerPage, setRowsPerPage] = useState(5);

const sortedData = tableRef.current?.dataManager?.sortedData ?? [];

const currentPageItems = useMemo(() => sortedData.slice(currentPage * rowsPerPage, currentPage * rowsPerPage + rowsPerPage),
    [removeData, currentPage, rowsPerPage]);

return (
    <MaterialTable
        tableRef={tableRef}
        data={remoteData}
        options={{
          pageSize: 5,
          pageSizeOptions: [5, 10, 25],
          sorting: true,
        }}
        onChangePage={setCurrentPage}
        onChangeRowsPerPage={setRowsPerPage}
    />
)

Обновление: насколько я понимаю, это ненадежно, но это может быть то, что я делаю. Если я пытаюсь получить доступ к tableRef в результате и войти, когда изменения сделаны, ничего не происходит. (tableRef не изменился)

useEffect(
    () => {
      tableRef.current?.dataManager?.sortedData &&
        console.log(tableRef.current.dataManager.sortedData);
    },
    [tableRef]
  );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...