Всем привет, осваиваю редакс, написал кейсы для добавления и удаления сущностей. Удаление не работает, логика вроде верная, берём весь
...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;