如何覆盖文件对象的值?

时间:2018-06-19 20:41:09

标签: javascript arrays reactjs

我有一个函数,该函数本质上是从数组中获取一个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和一个预览值。

我尝试分配颜色值,但是失败,因为颜色已经是对象中的值。

如何覆盖现有值?

1 个答案:

答案 0 :(得分:0)

File构造函数允许您在创建它时提供可选属性。尝试将所有属性放在此处,而不是稍后进行更改。

const newFile = new File([""], name, {
    id: Math.random().toString(32),
    color: arr[i].color,
    preview: arr[i].preview
});