Questa è una soluzione ragionevole per la condivisione dei dati tra due stati/riduttori?Condivisione dei dati tra due Redux Reducers/States
//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
}
);
caso affermativo, come si può garantire l'ordine con cui vengono eseguite le funzioni riduttore se sia risposta alla stessa evento inviato e la seconda funzione riduzione dipende il nuovo stato del primo?
Supponiamo di inviare un evento SET_FILTER
che si aggiunge alla raccolta activeFilters nei filtri Store e in seguito modifica la visibilità degli elementi nell'archivio eventi rispetto ai valori 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
}
}
Credo di aver trovato la risposta - INFORMATICA dati Derivato - selezionare di nuovo
http://redux.js.org/docs/recipes/ComputingDerivedData.html
Questo sembra tutt'altro che ideali. I riduttori dovrebbero essere una funzione di stato e azione, niente di più. Passare un terzo argomento al riduttore degli eventi è unidiomatico. Sarebbe utile vedere di più di quello che sta succedendo qui. Che aspetto hanno i riduttori 'filters' e' events'? –
Ciao! Hai condiviso lo stato tra i riduttori utilizzando la riselezione? Come hai fatto? –
Bene, ho trovato una soluzione diversa usando 'mapStateToProps' postato giù – Gorilla