Сделать сортировку таблицы реакции только в порядке возрастания и убывания?

#reactjs #react-table #react-table-v7

#reactjs #react-таблица #react-table-v7

Вопрос:

Сортировка таблицы React имеет 3 условия, default view , ascending и descending , как показано в их официальном примере https://codesandbox.io/s/github/tannerlinsley/react-table/tree/master/examples/sorting

Теперь я хочу сделать это только между ascending и descending и удалить представление по умолчанию. Я попытался отсортировать первый столбец по умолчанию

  useTable(
    {
      columns,
      data,
      initialState: {
        pageIndex: 0,
        pageSize: 10,
        sortBy: [
          {
            id: "asset",
            desc: false,
          },
        ],
      },
    },
  )
  

но представление по умолчанию все еще существует, когда я нажимаю на столбец, и я не знаю, как его удалить. Я также не могу найти это в их документации.

Ответ №1:

В документации useSortBy упоминается параметр disableSortRemove, который можно указать при вызове useTable .

Если true, не отсортированное состояние не будет доступно для столбцов после их сортировки.

Ответ №2:

Для тех, кто позже обратится к этому вопросу сортировки таблицы React, вот немного больше конкретики. Если вы используете disableSortRemove: true alone, у вас все равно самый первый щелчок будет «несортированным», а затем последующие щелчки будут отсортированы по возрастанию или убыванию. Возможно, это не тот пользовательский интерфейс, который вам нужен, поскольку нажатие кнопки, первое или нет, должно что-то делать, но с этой одной переменной при первом нажатии это не будет.

Чтобы вам не приходилось дважды нажимать кнопку сортировки, чтобы увидеть сортировку, сделайте это!

 const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } = useTable(
    {
      columns: tableColumns,
      data: tableData,
      disableSortRemove: true,
      defaultCanSort: true,
      initialState: {
        sortBy: [{ id: tableData[0]?.totalSeries?.totalSeries, desc: true }], //TODO: adjust TableData type file
      },
    },
    useSortBy
  );
  

Здесь мы добавили 3 вещи, а не только одну disableSortRemove: true . Мы добавили:

disableSortRemove: true , defaultCanSort: true , и initialState: { sortBy: [{ id: tableData[0]?.totalSeries?.totalSeries, desc: true }] // ВАЖНО: используйте здесь свою собственную форму данных },

Я не думаю, что вам нужен второй ( defaultCanSort: true ), НО первый и третий дают желаемый эффект: при загрузке страницы сортировка включена, и как только вы нажимаете кнопку сортировки, она сортируется противоположным образом.

Выполнено. Сортируется.

Ответ №3:

enableSortingRemoval:false ,

Включает / отключает возможность удаления сортировки для таблицы. Если true, то изменение порядка сортировки будет выглядеть следующим образом: ‘none’ -> ‘desc’ -> ‘asc’ -> ‘none’ -> …

Если false, то изменение порядка сортировки будет выглядеть следующим образом: ‘none’ -> ‘desc’ -> ‘asc’ -> ‘desc’ -> ‘asc’ -> …

Пожалуйста, найдите это свойство ‘enableSortingRemoval’ здесь- https://tanstack.com/table/v8/docs/api/features/sorting