данных, который приходит с сервера, я его храню в useState, по этому массиву делаю фильтрацию, но проблема в том, что если я нажимаю на другой фильтр, фильтрация происходит уже с массивом из первой фильтрации. Что можно сделать в этом случае ?
Просто не нужно мутировать стейт при фильтрации. Можно сварганить класс, принимающий на вход оригинальный массив.
Что? Какой класс?
Клади в стейт признак фильтрации, а не результат фильтрации. Саму фильтрацию производи в момент рендера. const result = state.filter(…) return <> {result.map(…)} </>
А класс зачем?
Инкапсуляция логики - это хорошо
const result = useMemo( () => state .filter(filterBy(type)), [state, type] ) return <> {result.map(…)} </>
Человек познает мир😄
Тогда у тебя логика в компоненте
У меня функция filterBy объявлена в отдельной библиотеке, описывающей бизнес-логику на языке доменных терминов, сгенерированная из деклараций, подобранных опытными системными аналитиками
Есть ещё аргументы?
Ну если опытными аналитиками, то ладно)
Так есть ещё аргументы в пользу классов (в конкретно этой задаче), кроме несостоятельной инкапсуляции (которая и без классов вполне себе работает через функции)?
В любом решении есть минусы, смысл про них спорить?
Да я ж не спорю — искренне недоумеваю, зачем там класс
Могу пример привести. Много букв. Охота читать?
Много букв, чтобы отфильтровать список? Не, спасибо. Не люблю многословность, классы тоже ею страдают
Обсуждают сегодня