【问题标题】:Unable to Update Immutable list item value无法更新不可变列表项值
【发布时间】:2021-05-27 09:00:08
【问题描述】:

我正在尝试使用以下代码更新不可变列表。但该列表未更改。为什么会发生这种情况?

private gaparameterlist: Immutable.List<ConfigurationConstant>;
private updateItem(globalparameter: enums.IASamplingGlobalParameters, event) {
    let item = this.gaparameterlist.find(x => x.key === globalparameter);
    item.value = event.target.value;
    this.gaparameterlist.set(0, item);
}

【问题讨论】:

  • 我会假设它是不可变的会阻止它被改变?也许创建一个新列表会更好?

标签: javascript typescript immutable.js


【解决方案1】:

Immutable.List.set() 不会修改原始列表,而是返回具有新值的副本。

所以你需要保存this.gaparameterlist.set(0, item)的结果:

private updateItem(globalparameter: enums.IASamplingGlobalParameters, event) {
    let item = this.gaparameterlist.find(x => x.key === globalparameter);
    item.value = event.target.value;
    this.gaparameterlist = this.gaparameterlist.set(0, item); // save new immutable list returned by list.set()
}

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多