Ho un'app React creata utilizzando Redux e Redux-Thunk. Tutto funziona bene, fino a quando non provo a combinare i riduttori per lo Redux docs.React-Redux: la combinazione di riduttori non riesce
Dato un iniziale, riduttore funzionale
export default function bigReducer(state = { events: [], flash: [] }, action) {
switch (action.type) {
case EVENTS_UPDATED:
return _.extend({}, state, { events: action.pathway_events })
case FLASH_MESSAGE_UPDATED:
return _.extend({}, state, { flash: action.flash })
default:
return state
}
}
Quando cerco di creare un riduttore composito
function flashReducer(state = { flash: [] }, action) {
switch (action.type) {
case FLASH_MESSAGE_UPDATED:
return _.extend({}, state, { flash: action.flash })
default:
return state
}
}
function eventReducer(state = { events: [] }, action) {
switch (action.type) {
case EVENTS_UPDATED:
return _.extend({}, state, { events: action.pathway_events })
default:
return state
}
}
// either with simple reducer composition
export default function bigReducer(state = {}, action) {
return {
flashReducer: flashReducer(state.flash, action),
eventReducer: eventReducer(state.events, action)
}
}
// or with the combineReducers function
export default const reducer = combineReducers({
flashReducer,
eventReducer
})
lo stato iniziale e le riduttori sembrano confondersi
// logging the state
var EventListContainer = connect((state) => {
console.log(state)
return { events: state.events })(React.createClass({ ...
// returns the incorrect state
# => Object {flashReducer: Array[0], eventReducer: Array[17]}
Come è possibile combinare i riduttori utilizzando React e Redux?
Vedere il mio aggiornamento. Non è necessario nominare le funzioni del riduttore in base ai tasti di sate, ma * è * necessario per allineare le chiavi del riduttore con i tasti di stato se si utilizza 'combina riduttori '. – nrabinowitz
Ci scusiamo per qualsiasi confusione, abbiamo l'abitudine di pubblicare prima la risposta minima e la risposta estesa come aggiornamento. – nrabinowitz
Eureka, l'ha fatto. Non sono sicuro di quanto mi sia mancato, è fondamentale. Grazie. – steel