На первый взгляд кажется, что проблема связана с тем, как вы вызываете removeTodo
. Как видите, функция принимает аргумент todo
, из которого затем извлекается идентификатор.
const mapDispatchToProps = dispatch => {
return {
removeTodo: todo => dispatch(removeTodo(todo.id))
};
};
Однако вы не проходите здесь задачу.
onClick={this.props.removeTodo}
Попробуйте вместо этого:
onClick={() => this.props.removeTodo(todo)}
Обновить, чтобы продолжить ход мыслей Уильяма.Я бы сделал следующее, передавая вокруг id
специально, а не весь объект.Это немного облегчает понимание того, что вы обновляете.
1) Функция отправки
const mapDispatchToProps = dispatch => {
return {
removeTodo: id => dispatch(removeTodo(id))
};
};
2) Функция вызова
onClick={() => this.props.removeTodo(todoId)}
3) Действие
export const removeTodo = (id) => (
{
type: REMOVE_TODO,
id
}
)
4) Редуктор
case REMOVE_TODO: {
return {
...state,
todos: state.todos.filter(todo => todo.id !== action.id)
}
}