Javascript 如何在Redux中将项目添加到数组中?
我正在构建一个Electron应用程序,并试图在每个页面上保留一个图像数组,因此如果删除该页面,我可以轻松地从文件系统中删除所有相关的图像 我现在所拥有的:Javascript 如何在Redux中将项目添加到数组中?,javascript,arrays,ecmascript-6,redux,Javascript,Arrays,Ecmascript 6,Redux,我正在构建一个Electron应用程序,并试图在每个页面上保留一个图像数组,因此如果删除该页面,我可以轻松地从文件系统中删除所有相关的图像 我现在所拥有的: 最初在运行时查看时,这似乎是可行的,但在完成后,我得到了一个空数组。维护这样的列表的正确方法是什么?使用Array.prototype.concat而不是Array.prototype.splice。Array.prototype.concat返回一个新数组,而Array.prototype.splice修改原始数组但不返回一个新数组,这不
最初在运行时查看时,这似乎是可行的,但在完成后,我得到了一个空数组。维护这样的列表的正确方法是什么?使用Array.prototype.concat而不是Array.prototype.splice。Array.prototype.concat返回一个新数组,而Array.prototype.splice修改原始数组但不返回一个新数组,这不是您所期望的。是否要将元素添加到imageUUIDs数组中?您是否尝试过使用push方法?如果您尝试向数组添加项,您可能希望使用array.prototype.concat而不是array.prototype.splice。concat将返回一个新数组,而splice将修改原始数组。也就是说,page.imageUUIDs.0,0,imguid正在修改原始数组,但没有返回数组,这正是您所期望的。如果使用Array.prototype.push,则再次修改原始数组。这意味着您需要创建对新数组的引用,并将其传递给Object.assign.Adam这就是答案。非常感谢!如果你提供的是答案而不是评论,我会把它标记为答案。
const initialState = [{
uuid: '65ec81f5-a783-4abd-bd0d-1451adda58c6',
imageUUIDs: []
}];
const actionsMap = {
[ActionTypes.ADD_IMAGE_TO_PAGE](state, action) {
const pageUUID = action.pageUUID;
const imgUUID = action.imgUUID;
return state.map(page =>
(page.uuid === pageUUID ?
Object.assign({}, page, {
imageUUIDs: page.imageUUIDs.splice(0, 0, imgUUID),
}) : page)
);
},
};