2016-07-15 19 views
1

Dies sind meine aktuellen Action-Ersteller, sie laufen gut & Return-Aktionen wie üblich. Ich habe mit etwas Protokollierung getestet, es funktioniert hier:Warum erhält mein Reducer meine Aktionen nicht? (Verwenden von React & Redux)

export function stateToEntry() { 
    return { type: types.STATE_TO_ENTRY, formState: 'entry-mode'}; 
} 

export function stateToEdit() { 
    return { type: types.STATE_TO_EDIT, formState: 'edit-mode'}; 
} 

export function stateToDelete() { 
    return { type: types.STATE_TO_DELETE, formState: 'delete-mode'}; 
} 

Dies ist meine aktuelle Reduzierung, die meine Aktionen nicht erhalten. Ich habe hier getestet, es scheint, dass ich nicht einmal in die Konsole einloggen kann:

import * as types from '../actions/actionTypes'; 

export default function formStateReducer(state = [], action) { 
    switch(action.type) { 
     case types.STATE_TO_ENTRY: 
      console.log('entry-mode'); 
      return {formState: action.formState}; 
     case types.STATE_TO_EDIT: 
      //console.log('edit-mode'); 
      return {formState: action.formState}; 
     case types.STATE_TO_DELETE: 
      //console.log('delete-mode'); 
      return {formState: action.formState}; 
     default: 
      return state; 
    } 
} 

Hier ist meine kombinierte Reduzierung. Der Stellenreduzierer funktioniert einwandfrei, aber ich erhalte auf meinem formState eine Null, sodass er im Laden korrekt verknüpft ist. :

const rootReducer = combineReducers({ 
    locations, 
    formStates 
}); 


export default rootReducer; 

Was hätte ich wahrscheinlich verpasst haben?

+1

-Code sieht gut aus, außer Sie den Zustand auf ein leeres Array sind in Verzug, wenn sie von Code unten wollen Sie Ihr Zustand scheint ein Objekt zu sein mit einer Eigenschaft 'formState'. Das ist vielleicht nicht das, was du willst. Abgesehen von diesem Problem sieht es so aus, als ob Sie nicht annähernd genug Informationen geben, um festzustellen, was Sie falsch machen. – DDS

+0

Überprüfen Sie, ob Sie die Reduzierungen korrekt hinzufügen und einbeziehen – octohedron

+0

Ich habe gerade herausgefunden, dass ich meine Aktionen nicht ordnungsgemäß abdecke. Ich benutze 'formStateActions.stateToEntry();' was ich denke, ist nicht korrekt. –

Antwort

1

Aus der Dokumentation: bindActionCreators ... Schaltet ein Objekt, dessen Werte Aktions-Ersteller sind, in ein Objekt mit denselben Schlüsseln, aber mit jedem Aktionsersteller, der in einen Dispatch-Aufruf eingebunden ist, sodass sie direkt aufgerufen werden können.

So, du bist es falsch, versuchen Sie dies:

let foo = { 
    location: bindActionCreators(locationActions, dispatch), 
    form: bindActionCreators(formActions, dispatch) 
} 
// later in your code -- will dispatch that action automatically 
foo.location.someActionFromLocationActionsObject() 
+0

'Object.assign()' funktioniert auch –