【问题标题】:fromJS with object type file (file upload)fromJS 对象类型文件(文件上传)
【发布时间】:2017-04-18 19:47:12
【问题描述】:

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

fromJS 做得很好即使是嵌套结构,例如:

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

但是

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

  • 但是当对象是文件时 String(MyFileObject) = [object File], fromJS 将离开它[object File]

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

Q2:这种情况下是否有某种 FileMap(相当于 Map 但文件对象镜像)?

【问题讨论】:

    标签: immutable.js


    【解决方案1】:

    您不能冻结文件对象。但是,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()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 2012-09-16
      • 2019-05-08
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多