Решаю сейчас задачу фильтрации таблиц и не могу придумать, как лучше, с точки зрения архитектуры, сделать такой компонент:
В чем, собственно, сложности. Компонент должен синхронизироваться c query параметрами в URL, однако, для каждого фильтра должен быть свой набор полей, включая сложносоставные.
Что я имею ввиду под "сложносоставными":
1) В данном случае query будет выглядеть так:
?search=42

2) А в этом уже
?description=42
То есть ключ должен генерироваться на лету в зависимости от полей.
Так же эти параметры должны парситься и попадать в список примененных фильтров:
К чему я пришел на данный момент. Есть компонент-обёртка TableFilters, он принимает в себя массив объектов с описанием доступных фильтров, каждый такой объект содержит в себе поле component, что позволяет оборачивать наборы полей для фильтров в компоненты и переиспользовать их.
Так же каждый такой компонент умеет генерировать строку, которая будет отображена в примененных фильтрах (например "Цена от 500 до 900"). И с этим также есть определенная трудность - строка генерируется без проблем, когда мы вбиваем вручную данные. Однако при парсинге query строки, который происходит в компоненте-обёртке, компонент не знает, как правильно составить эту строку.
Это основные моменты, которые хотелось бы обсудить и понять, в каком направлении вообще двигаться.