@sharkdest

Как реализовать фильтр в react-table?

react-table

Здравствуйте, помогите, пожалуйста, реализовать фильтр такого типа:
Когда вписываешь букву - фильтр возвращает все результаты где присутствует эта буква.
5cc1aa80b289d094236846.png
Но мне нужно сделать так, что бы когда вписал букву и нажал Enter - метод фильтра поменялся и возвращал только те значения, которые содержат только эту букву.

Пример:
Значения(строки): test, rest, st
Когда я введу "st" - мне вернет все три строки, но когда нажму Enter - вернет только одну строку (st).

Сейчас у меня есть только первая стадия:
...
<ReactTable
  columns={columns}
  data={data}
  filterable
  defaultFilterMethod={(filter, row, column) => {
    const id = filter.pivotId || filter.id;
    return row[id] !== undefined
      ? String(row[id])
          .toLowerCase()
          .includes(filter.value.toLowerCase())
      : true;
  }}
/>
...


Надеюсь понятно обьяснил, спасибо.
  • Вопрос задан
  • 2608 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
Сделайте кастомный фильтр, с обработчиками onChange и onKeyPress, в которых и будет происходить переключение функции фильтрации. Например, так (поле lastName, посмотреть в деле можно вбивая короткие слова, которые являются частью более длинных - такие как war, son, comb, sign, child, work, can и т.п.).

UPD. Вынесено из комментариев:

у меня много столбцов, плюс к этому много таблиц, и логику фильтра нужно применить ко всему

Ну так сделайте компонент-обёртку для этой таблицы, который будет задавать дефолтный компонент фильтра и дефолтную же функцию фильтрации - их вы можете взять из моего примера.

UPD. https://codesandbox.io/s/nn1z53jn4l (только первые три поля, у последнего фильтр оставлен переопределённым).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы