我是Redux的新手,遇到了以下挑战:我有一个过滤器列表,必须在第一次加载组件后以及每次有人更改顶部导航栏中的下拉列表时进行更新。过滤列表取决于另一个下拉菜单,这是我的状态的一部分。伪代码在[1]下方。
从理论上讲,我可以在两个组件(主要组件和导航栏)中复制我的动作分配,但这当然是不好的设计。
这使我想到一个问题:必须将自身访问状态的redux调度调用放在哪里?这是否存在于操作文件中,然后需要访问状态本身(本身可能不是好的设计)?
谢谢!
[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
}