问题描述
我正在尝试向附加到网格的不可变列表中插入一个虚拟值。但是当我检查时没有任何显示
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
看起来很可疑。在不知道代码细节的情况下,如果您需要手动触发组件的重新渲染,那么您就做错了。例如。不使用 props
或 state
作为您的数据。 List 构造函数的 [] 是不必要的。