我有一个函数,该函数本质上是从数组中获取一个File对象,并通过一些调整来复制它:
i
是数组索引
duplicate(i) {
const arr = [...this.state.files];
console.log(arr[i].color) //red
let name = arr[i].name.slice(0, -4);
name = `${name}-${Math.floor(Math.random() * 1000) + 1}.png`;
const newFile = new File([""],name)
const index = i + 1;
arr.splice(index, 0, newFile)
arr[i+1].id = Math.random().toString(32);
arr[i+1].color = arr[i].color //set the color to red
arr[i+1].preview = arr[i].preview;
console.log(arr[i+1]) //color in arr is now black (the default color)
this.setState({
files: arr
})
}
正在发生的事情是将文件对象重新创建到数组中,然后我成功为其指定了一个新名称,一个id和一个预览值。
我尝试分配颜色值,但是失败,因为颜色已经是对象中的值。
如何覆盖现有值?
答案 0 :(得分:0)
File
构造函数允许您在创建它时提供可选属性。尝试将所有属性放在此处,而不是稍后进行更改。
const newFile = new File([""], name, {
id: Math.random().toString(32),
color: arr[i].color,
preview: arr[i].preview
});