У меня есть список со следующими действиями:
- Добавление объекта в массив с использованием функции
useReducer()
. - Remove Объект из массива с использованием функции
useReducer()
. - Заменить новый массив старым массивом с использованием функции
useReducer()
.
Мне нужно лучшееи безопасный способ обновить мой список.
В настоящее время я сделал что-то вроде ниже, но это не работает должным образом.
const reducer = (state, {type, value}) => {
switch(type){
case 'replacenewarray':
return value;
case 'additem':
return {...state, value}
case 'removeitem':
return state.filter(item => item.room !== value);
default:
return state;
}
}
Мой функциональный компонент такой, как показано ниже:
const newArray = [
{room: 'someroomid1', ....},
{room: 'someroomid2', ....},
{room: 'someroomid3', ....}
];
const itemToAdd = {room: 'someroomid4', ....};
const itemToRemoveWithRoomId = 'someroomid2';
export const Group = memo(props=> {
const [list, setList] = useReducer(reducer, []);
setList({type: 'replacenewarray', value: newArray});
setList({type: 'additem', value: itemToAdd});
setList({type: 'removeitem', value: itemToRemoveWithRoomId});
});