首页 > 解决方案 > 为什么这个属性不在 Object.assign 中合并?

问题描述

所以我有这样的功能:

    const photosWithTempId = files.map(file => {
      const tempId = generateTempId(file);
      console.log("tempId: ", tempId);
      return Object.assign(file, {
        ["id"]: tempId,
        ["filename"]: file.name,
        ["downloadUrl"]: file.preview,
      });
    });

它应该在两个附加字段旁边添加一个时间 IDfilenamedownloadUrl

问题是返回的File object没有id属性,但它确实有新的filenamedownloadUrl属性:

File {
  name: "pipboy.gif"
  lastModified: 1588020743900
  lastModifiedDate: Mon Apr 27 2020 23:52:23 GMT+0300 (Eastern European Summer Time) {}
  webkitRelativePath: ""
  size: 30265
  type: "image/gif"
  preview: "blob:http://localhost:3000/f0cafa2b-82a1-4652-bbaa-234c4fc1b8b6"
  index: 0
  progress: 0
  uploadState: "NOT_STARTED"
  fieldsToPost: {filename: "pipboy.gif", originalFilename: "pipboy.gif"}
  filename: "pipboy.gif"
  downloadUrl: "blob:http://localhost:3000/f0cafa2b-82a1-4652-bbaa-234c4fc1b8b6"
}

generateTempId(file)是一个返回随机生成的字符串 id 的函数,例如tempId_50481707

export const generateTempId = file =>
  !file["id"]
    ? TEMP_ID + Math.floor(Math.random() * RANDOM_TEMP_NUMBER)
    : file["id"];

最终对象应该具有该属性id: tempId_50481707,但它没有。

标签: javascript

解决方案


推荐阅读