React Reducer не может распознать action.type сравнение - PullRequest
0 голосов
/ 11 марта 2019

Поскольку это довольно сложно объяснить, весь исходный код доступен в 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);

Не могли бы вы указать, если я что-то упустил?

...