在redux reducer中添加对象的嵌套数组中的项,可以按照以下步骤进行操作:
下面是一个示例代码:
// 假设原始state的结构如下:
const initialState = {
data: {
nestedArray: []
}
};
// 定义一个Redux reducer
const reducer = (state = initialState, action) => {
switch(action.type) {
case 'ADD_ITEM':
// 复制state的对象和嵌套数组
const newData = Object.assign({}, state.data);
const nestedArrayCopy = state.data.nestedArray.slice();
// 向嵌套数组中添加新的项
nestedArrayCopy.push(action.payload);
// 将修改后的嵌套数组赋值给新的对象
newData.nestedArray = nestedArrayCopy;
return {
...state,
data: newData
};
default:
return state;
}
};
// 使用Redux的store和reducer
import { createStore } from 'redux';
const store = createStore(reducer);
// dispatch一个action来添加新的项到嵌套数组中
store.dispatch({
type: 'ADD_ITEM',
payload: { name: 'item1', value: 10 }
});
在上面的示例中,我们创建了一个Redux reducer,该reducer在接收到类型为'ADD_ITEM'的action时会向嵌套数组中添加新的项。我们使用Object.assign()和slice()方法复制了state的对象和嵌套数组,确保不直接修改原始state。然后,我们通过push()方法将新的项添加到嵌套数组中,并将修改后的数组副本赋值给新的对象。最后,我们返回一个新的state对象,其中包含修改后的嵌套数组。
请注意,以上示例中的代码只是一个简单的示例,实际应用中可能需要根据具体情况进行调整。同时,对于复杂的嵌套结构,可能需要使用深拷贝工具库来进行对象的复制,以避免浅拷贝带来的问题。
领取专属 10元无门槛券
手把手带您无忧上云