【发布时间】:2019-09-22 17:24:09
【问题描述】:
我有一个包含以下操作的列表:
-
使用
useReducer()函数将对象添加到数组中。 -
使用
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});
});
【问题讨论】:
-
这段代码遇到了什么问题?
-
我会在减速器的某处声明状态的形状,这样有助于理解更多的代码,我也会按照这里的例子reactjs.org/docs/hooks-reference.html#usereducer
标签: reactjs react-native react-hooks