Ваша фактическая ошибка TypeError: Cannot read property 'id' of undefined
, и, взглянув на ваш инкриминированный код:
const deleteEvent = (state, payload) => {
return [...state.filter(event => event.id !== payload.event.id)];
};
... мы видим, что только в 2 местах доступно свойство с именем id
:
- как
event.id
- и как
payload.event.id
Так что либо event
не определено, либо payload.event
является.
Первый сценарий может произойти, если у вас есть неопределенные значения в state
(который мы можем считать массивом).Второй обычно происходит из-за неправильного использования создателей действий.
Глядя на трассировку стека, мы видим следующее:
handleDeleteEvent = id => {
this.props.deleteEvent(id);
};
Это означает, что единственное, что вы передаете создателю действияэто сам id
.
Вы не поделились реализацией createReducer
, но мы можем сделать вывод, что это своего рода вспомогательный помощник.Обычно единственным аргументом создателей действий, выставляемых такими помощниками, является непосредственно payload
.
Итак, может ли быть правильная реализация вашего редуктора следующим образом?
const deleteEvent = (state, payload) => {
return [...state.filter(event => event.id !== payload)];
};