将项目插入到附加到网格的不可变列表中不起作用

问题描述

我正在尝试向附加到网格的不可变列表中插入一个虚拟值。但是当我检查时没有任何显示

private filterdSchoolSelectionData: Immutable.List<SchoolSelectionListData> = Immutable.List([]);
   let emptydata: SchoolSelectionListData = {
                    schoolIdentifier: null,schoolName: null,countryID: 1234,countryName: 'asfasf',regionID: null,regionName: null,schoolID: null,isSchoolSelected: true,isCountrySelected: true,isRemoved: false,rowVersion: null
            };
            this.filterdSchoolSelectionData.splice(2,emptydata);
            this.reRender();

列表的大小为 0。

解决方法

immutablejs 的主要特性是不变性。一个特定的对象引用可能永远不会改变它的数据。这就是为什么所有函数都返回一个带有结果的新集合。

因此您需要将您对 splice 的调用的输出分配给某些东西,例如this.filterdSchoolSelectionData = this.filterdSchoolSelectionData.splice(2,emptydata);

因为这通常是人们进入 immutable.js 的第一个陷阱,我建议您在开始讨厌自己或库之前阅读 docs(或至少是介绍);-)

PS:那个 reRender 看起来很可疑。在不知道代码细节的情况下,如果您需要手动触发组件的重新渲染,那么您就做错了。例如。不使用 propsstate 作为您的数据。 List 构造函数的 [] 是不必要的。