【问题标题】:Custom fromJS immutablejs issue自定义 fromJS immutablejs 问题
【发布时间】:2016-12-19 12:38:02
【问题描述】:

我创建了一个自定义 fromJS 函数,这样当我将对象转换为不可变对象时,结果将只包含 OrderedSets 和 Maps(而不是 Lists 和 Maps)。

除了在以下情况下对象中的键称为“长度”之外,这一切都很好。任何想法如何解决手头的问题?

var imm = require("immutable")

function fromJS(js) {
    return typeof js !== 'object' || js === null ? js :
        Array.isArray(js) ? 
            imm.Seq(js).map(fromJS).toOrderedSet() :
            imm.Seq(js).map(fromJS).toMap();
}

var output = fromJS({
    measurements: {
        length: 10,
        weight: 30
    }
}).toJS();

// output is :
{
    measurements: {
        0: undefined,
        1: undefined
        ....
        32: undefined
    }
}

【问题讨论】:

    标签: javascript reactjs redux immutable.js


    【解决方案1】:

    通过将属性 length 更改为 mLength 来工作。

    这里是JSBin

    ImmutableJS 查找length 属性来检查给定的值是否为array-like 对象。

    由于你的measurements对象有一个属性length,它认为这个对象是一个array-like对象并继续基于array-like类型的Seq构造,问题就从这里开始了。


    为了确认这一点,here 是输出 Map 的 jsbin,在 measurements 对象的长度属性中给出了时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 2022-01-21
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多