2016-07-15 3 views
1

Это мои текущие создатели действий, они нормально работают & как обычно. Я проверил с некоторыми протоколирования, его работы здесь:Почему мой редуктор не принимает мои действия? (Использование 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'}; 
} 

Это мой текущий редуктор, который не получает мои действия. Я протестировал здесь, кажется, что я даже не могу войти в консоль:

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; 
    } 
} 

Вот мой комбинированный редуктор. Редуктор местоположений работает нормально, но я получаю null на моем formState, поэтому он правильно связан внутри магазина. :

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


export default rootReducer; 

Что я мог пропустить?

+1

код выглядит отлично, за исключением вы недобросовестный состояние пустой массив, когда из кода ниже, кажется, вы хотите, чтобы ваше состояние, чтобы быть объектом с свойством 'formState'. Возможно, это не то, что вы хотите. Помимо этой проблемы, похоже, что вы не даете достаточно информации, чтобы определить, что вы делаете неправильно. – DDS

+0

убедитесь, что вы правильно добавляете и включаете редукторы – octohedron

+0

Я только что узнал, что я не правильно отправляю свои действия. Я использую 'formStateActions.stateToEntry();' который я считаю неправильным. –

ответ

1

Из документов: bindActionCreators ... Включает объект, значения которого являются создателями действий, в объект с теми же ключами, но с каждым создателем действия, заключенным в диспетчерский вызов, поэтому они могут быть вызваны напрямую.

Таким образом, вы используете его неправильно, попробуйте следующее:

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()' работает тоже –

Смежные вопросы