fromJS与对象类型文件(文件上传)

时间:2016-12-04 08:47:29

标签: immutable.js

不可变的js - fromJS:处理文件上传(文件对象的数组)似乎无法转换为不可变的

fromJS做得很好即使使用嵌套结构也是如此:

javascript const nested = [ { id: 1, val1: '1, other: { id: 1, prop1: '0' } }, true ];

BUT

  • 只要对象 String(MyObject) = [object Object] fromJS,就会将其转换为Map()

    < / LI>
  • 但当对象是文件 String(MyFileObject) = [object File]时,fromJS会将其留下[object File]

Q1:如何(我的意思是最好的方式)处理使用不可变js的文件上传?

Q2:对于这种情况,是否存在某种类型的FileMap(相当于Map但是文件对象镜像)?

1 个答案:

答案 0 :(得分:0)

您不能冻结文件对象。但是,File始终由一堆只读字段组成,因此可能无需转换它。

如果要限制与对象的交互,可以使用包装方法,如Is there a way to freeze an ES6 Map?中所述。将对象包装在包装器中,这会限制对它的访问。然后,您可以编写自己的reviver for fromJS来专门转换这些对象:

function reviver(key, value) {
  if (value instanceof File)  {
    return wrapFile(value);
  }
  return isKeyed(value) ? value.toMap() : value.toList()
}