微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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 构造函数的 [] 是不必要的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。