Ich habe eine React App, die mit Redux und Redux-Thunk erstellt wurde. Alles funktioniert gut, bis ich versuche, Reduzierungen pro Redux docs zu kombinieren.React-Redux: Das Kombinieren von Reduzierungen schlägt fehl
ein erster, funktioneller Minderer
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
}
}
Gegeben Wenn ich versuche,
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
})
den Anfangszustand und die Reduzierungen einem zusammengesetzten Minderer scheinen zu schaffen, um verwechseln
// 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]}
Wie kann ich Reduktoren mit React und Redux kombinieren?
Siehe mein Update. Sie müssen Ihre Reducer-Funktionen nicht gemäß den sate-Keys benennen, aber Sie * müssen * die Reducer-Keys mit den State-Keys ausrichten, wenn Sie 'combinedReducers' verwenden. – nrabinowitz
Sorry für irgendeine Verwirrung, habe eine SO Gewohnheit, die minimale Antwort zuerst und die ausgedehnte Antwort als Update bekannt zu geben. – nrabinowitz
Eureka, das hat es getan. Nicht sicher, wie ich das verpasst habe, es ist entscheidend. Vielen Dank. – steel