Javascript 在Redux reducer中扩展或克隆文件Web API对象以支持其他属性
我正试图保留一组用户选择上载的文件。每个文件都是一个对象。我想向它添加其他属性,如“进度”和“状态”,以便在用户开始上传过程时,我可以向用户显示这些数据 我遇到的问题是,当我尝试使用Javascript 在Redux reducer中扩展或克隆文件Web API对象以支持其他属性,javascript,reactjs,ecmascript-6,redux,fileapi,Javascript,Reactjs,Ecmascript 6,Redux,Fileapi,我正试图保留一组用户选择上载的文件。每个文件都是一个对象。我想向它添加其他属性,如“进度”和“状态”,以便在用户开始上传过程时,我可以向用户显示这些数据 我遇到的问题是,当我尝试使用object.assign()或JSON.parse(JSON.stringify(obj))方法“复制”文件对象时,我只会返回我自己设置的属性,而不是对象固有的值 这是我尝试使用Object.assign()的一个示例: 可以理解,这给我带来了各种各样的问题 跟踪文件并以适当的方式扩展其属性的好方法是什么 多亏了所
object.assign()
或JSON.parse(JSON.stringify(obj))
方法“复制”文件对象时,我只会返回我自己设置的属性,而不是对象固有的值
这是我尝试使用Object.assign()
的一个示例:
可以理解,这给我带来了各种各样的问题
跟踪文件并以适当的方式扩展其属性的好方法是什么
多亏了所有这些。只是不要试图在
文件
对象上存储额外的属性。而是将它们作为同级存储在父对象上:
// INIT case
return {
...state,
files: [
...state.files,
{ fileObject, status: "INITIAL" }
]
};
// UPDATE case
return {
...state,
files: [
...state.files.slice(0, payload.index),
{ ...state.files[payload.index], status: "UPLOADING", progress: 0 },
...state.files.slize(payload.index + 1)
]
};
在该计划中:
// fileObject is the File
const { fileObject, status, progress } = state.files[2];
谢谢我猜只是有一天…:s
// fileObject is the File
const { fileObject, status, progress } = state.files[2];