Czy jest to rozsądne rozwiązanie do udostępniania danych między dwoma stanami/reduktorami?Udostępnianie danych między dwoma Redux Reduktorami/państwami
//combineReducers
function coreReducer(state = {}, action){
let filtersState = filters(state.filters, action);
let eventsState = events(state.events, action, { filters: filtersState});
return { events: eventsState, filters : filtersState};
}
export const rootReducer = combineReducers(
{
core : coreReducer,
users
}
);
Jeśli tak, to w jaki sposób można zagwarantować kolejności, w jakiej są wykonywane funkcje reduktor jeśli zarówno odpowiedź do tej samej wysłane zdarzenia i drugiej funkcji redukującej zależy od nowego stanu pierwszego?
Załóżmy, że wysyłamy zdarzenie SET_FILTER
, które dołącza do kolekcji activeFilters w magazynie filtrów, a następnie zmienia widoczność elementów w magazynie zdarzeń pod kątem wartości activeFilters.
//ActiveFilters reducer
function filtersActions(state = {}, action){
switch (action.type) {
case SET_FILTER:
return Object.assign({}, state, {
[action.filterType]: action.filter
})
case REMOVE_FILTER:
var temp = Object.assign({}, state);
delete temp[action.filterType];
return temp;
case REMOVE_ALL_FILTERS:
return {};
default:
return state
}
}
Myślę, że znalazłem odpowiedź - Komputery opracowanych danych - Wybierz ponownie
http://redux.js.org/docs/recipes/ComputingDerivedData.html
To wydaje mniej niż idealne. Redukcje powinny być funkcją państwa i działania, nic więcej. Przekazanie trzeciego argumentu do reduktora zdarzeń jest jednoznaczne. Pomogłoby to dowiedzieć się więcej o tym, co się tutaj dzieje. Jak wyglądają reduktory "filters" i "events"? –
Cześć! Czy dzieliłeś stan między reduktorami za pomocą reselekcji? Jak to zrobiłeś? –
Znaleźliśmy inne rozwiązanie z opcją 'mapStateToProps' – Gorilla