будучи новичком в redux, я столкнулся со следующей проблемой: у меня есть список фильтров, который должен обновляться как после первой загрузки компонента, так и каждый раз, когда кто-то меняет раскрывающийся список в верхней панели навигации. Список фильтров зависит от другого раскрывающегося списка, который является частью моего состояния. Псевдокод ниже [1].
Я могу теоретически продублировать свою диспетчеризацию действий в обоих Компонентах (основной и панель навигации), но это, конечно, плохой дизайн.
Это подводит меня на вопрос: куда поместить избыточные вызовы диспетчеризации, которые сами должны получить доступ к состоянию? Будет ли это жить в файле действий, который затем должен был бы получить доступ к самому состоянию (которое само по себе не может быть хорошим дизайном)?
Спасибо!
[1]
function getDrillOptions() {
let data = props.data; // <- is part of redux' store
let countries = props.selectedFilters.countries; //<- part of redux' store
let regions = getRegionForCountry(countries);
let selectable = new Set();
Object.keys(data[regions][countries]).map((weeknum) => {
data[regions][countries][weeknum].map((row) => {
selectable.add(row[event.target.value]);
});
});
dispatch(populateFilters({filter: 'mainDrillOptions', value: [...selectable]})); // <- sets state
}