跳至主内容区

自动冻结

[非官方测试版翻译]

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

egghead.io lesson 7: Immer automatically freezes data

Immer 会自动冻结所有通过 produce 修改的状态树。这能防止在生产者函数外部意外修改状态树。在大多数情况下这是最优行为,但也可以通过 setAutoFreeze(true / false) 显式开关此功能。

Immer 永远不会冻结不可枚举的、非自有的或符号属性的内容,除非这些内容在草稿中被修改过。

⚠️ Immer 会递归冻结所有内容,对于未来不会更改的大型数据对象,这可能有些过度处理。此时使用 freeze 工具进行浅层预冻结会更高效。⚠️

⚠️ 启用自动冻结时,配方函数并非完全无副作用:任何最终出现在生成结果中的普通对象或数组都将被冻结,即使这些对象在生产者开始前并未冻结!⚠️