Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Redux中将项目添加到数组中?_Javascript_Arrays_Ecmascript 6_Redux - Fatal编程技术网

Javascript 如何在Redux中将项目添加到数组中?

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修改原始数组但不返回一个新数组,这不

我正在构建一个Electron应用程序,并试图在每个页面上保留一个图像数组,因此如果删除该页面,我可以轻松地从文件系统中删除所有相关的图像

我现在所拥有的:


最初在运行时查看时,这似乎是可行的,但在完成后,我得到了一个空数组。维护这样的列表的正确方法是什么?

使用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)
        );
  },

};