官方的redux页面强烈建议将only serializable objects放入状态树:
强烈建议您只放置简单的可序列化对象, 数组和图元放入您的商店。从技术上讲 将不可序列化的商品插入商店,但这样做可能会破坏 持久性和补给存储内容的能力 会干扰时间旅行调试。
但是,在同一页上的后面几节中,有一个section about using immutable.js:
针对不可变的库(例如Immutable.JS)旨在 克服了JavaScript固有的不变性问题, 为您的性能提供不变性的所有好处 应用程序要求。
这两个想法不矛盾吗?
答案 0 :(得分:1)
不,不是。
ImmutableJs实例是可序列化的。例如,使用transit-immutable
。
仅因为ImmutableJs实例不是普通的javascript对象,并不意味着它们不可序列化。另外,仅使用简单的javascript对象并不能完全保证商店的状态可序列化。例如,想象一个减速器做这样的事情:
const sillyReducer = (state, action) => {
if (action.type !== 'DO_SOMETHING_SILLY') return state;
const a = {};
const b = {next: a};
a.next = b;
return a;
}
循环依赖性很难序列化。
答案 1 :(得分:0)
时间旅行调试(又名Redux devtools)supports Immutable.js。它是可序列化的。