Как я могу отфильтровать дату между диапазоном дат в реагирующей таблице

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

установка фильтра для столбца даты здесь:

const tableInstance = useRef(null);
  const filterTable = (dates) => {
    if (tableInstance.current) {
      tableInstance.current.setFilter('session_date', dates);
    }
  };

Функциональность onClick здесь:

const handleFilter = () => {
    setSessionsData(data);
    if (sessionsData) {
      const dateArray = getDates(
        moment(fromDate).format('L'),
        moment(toDate).format('L')
      );
      filterTable(dateArray);
    }
  };
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
6
0
4 047
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы надеетесь, что у вас хорошо получается реагировать на хуки, или если вам нужна помощь, перейдите по ссылке ниже.

  1. https://reactjs.org/docs/hooks-reference.html
  2. https://www.digitalocean.com/community/tutorials/how-to-call-web-apis-with-the-useeffect-hook-in-react

Теперь к вашему вопросу подход, который вы должны принять. Есть два значения состояния, на которые вы наложили фильтр, т. е. ваш date_range.

Вы можете просто передать событие по щелчку фильтра, чтобы обновить состояния для date_range Где вы добавите хуки для установки значения в таблице, как показано ниже,

const [list, setList] = useState([]);

  useEffect(() => {
     fetch('http://localhost:3333/list')
   .then(data => {
       setList(data.json);
    })
   })
 }, [])

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

  1. https://reactjs.org/docs/react-api.html
  2. https://www.digitalocean.com/community/tutorials/five-ways-to-convert-react-class-components-to-functional-components-with-react-hooks
Ответ принят как подходящий

Добавьте этот фильтр в соответствующий объект столбца

{
  id: 'your_column_id',
  accessor: 'your_accessor',
  filter: (rows, id, filterValue) => {
    return rows.filter(
      (row) =>
        filterValue.length <= 0 ||
        !filterValue ||
        filterValue.includes(row.values[id])
    );
  }
}

Здесь filterValue содержит массив, содержащий все возможные совпадения, которые требуются, т.е. dateArray (все даты от «fromDate» до «toDate») в вашем случае.

Другие вопросы по теме