Всем привет, осваиваю редакс, написал кейсы для добавления и удаления сущностей. Удаление не работает, логика вроде верная, берём весь
...state
, используем на нём метод
filter
которых возвращает новый массив, состоящий из элементов удовлетворяющих условию, т. е. из элементов не равных
action.name
. Таким образом мы удалили нужную сущность из массива + создали новый массив, а не мутировали старый, вроде всё верно, но почему не работает?
reducer
export default function reducer(state = initialState, action) {
switch (action.type) {
case 'ADD_ITEM':
return [
...state,
{
name: action.name,
age: action.age
}
];
case 'DELETE_ITEM':
return [
...state,
state.filter(name => name!== action.name),
];
default:
return state;
}
}
render in App.js:
function ListOfUsers() {
const listItems = users.map(function (value, index) {
return (
<div>
<li key={index}>{value.name}, {value.age}</li>
<button onClick={() => dispatch({ type: 'DELETE_ITEM', name:value.name })}
className="btn btn-danger btn-sm">
Удалить
</button>
</div>
)
});
return (
<ul>{listItems}</ul>
);
}
state looks like:
const initialState = [
{
name: 'Theodore Roosevelt',
age: 56
},
];
export default initialState;