Поскольку это довольно сложно объяснить, весь исходный код доступен в Codesandbox: https://codesandbox.io/s/5z9m4lj1ln
Проблема: Правильно отправлено action
, но reducer
не реагируя на это.Я также прикрепил еще один action
, и он работает отлично.как ни странно, условие if
не работает только для определенного actions
, в то время как другое action
работает нормально.Я даже дважды проверил, не ошибся ли я type
из action
, но это не опечатка.Просто кажется, что сравнение для action.type
не удается для определенного случая, и я не знаю, почему.
ниже приведен упрощенный код.в случае, если вы не можете определить проблему, я также пометил это место комментарием // ***this is not reachable!
в кодах и окне выше.
Редуктор
// reducer
reducerA(state, action) => {
console.log('reducer is working'); // somehow this console message works!
console.log(action) // and I've checked the action from here;
// it appears to be an object with proper type, payload
console.log('DELETED, action.type) // it seems to be the exactly same stuff!
if (action.type === 'DELETED') {
console.log('deleted'); // ***this is not reachable!
return { ...someState };
}
return defaultValue;
}
export default combineReducers({
reducerA,
reducerB // some other reducer
})
Action Creator
export const deleteOp = title => {
return {
type: "DELETED",
payload: title
};
};
фактический компонент с проблемой
const myComponent = ({ dataA, deleteOp }) => {
return <button onClick={() => deleteOp(dataA.title)}>delete</button>
}
const mapStateToProps = state => ({ dataA: state.reducerA }); // this works fine
// data seems to be distributed properly
export default connect(mapStateToProps, { deleteOp })(myComponent);
Не могли бы вы указать, если я что-то упустил?