在阅读 redux 文档时,我发现了这一点:
不过,您应该尽力保持状态可序列化。不要在里面放任何你不能轻易转换成 JSON 的东西。
所以我的问题是,保持状态可序列化有什么好处?或者,如果我将不可序列化的数据放入存储中,我可能会遇到什么困难?
而且我相信这不是 redux 独有的 - Flux,甚至 React 本地状态也暗示了同样的事情。
为了让我清楚这里是一个例子。假设商店结构是这样的。
{
books: {
1: { id: 1, name: "Book 1", author_id: 4 }
},
authors: {
4: { id: 4, name: "Author 4" }
}
}
这应该看起来不错。但是,当我尝试访问“第一本书的作者”时,我必须编写如下代码:
let book = store.getState().books[book_id];
let author = store.getState().authors[book.author_id];
现在,我要定义一个类:
class Book {
getAuthor() {
return store.getState().authors[this.author_id];
}
}
我的商店将是:
{
books: {
1: Book(id=1, name="Book 1")
},
...
}
这样我就可以通过以下方式轻松获得作者:
let author = store.getState().books[book_id].getAuthor();
第二种方法可以让“书”对象知道如何检索作者数据,因此调用者不需要知道书和作者之间的关系。那么,为什么我们不使用它,而不是像方法 #1 那样在商店中保留“普通对象”?
任何想法表示赞赏。
原文由 charlee 发布,翻译遵循 CC BY-SA 4.0 许可协议
直接来自 redux 常见问题解答:
延伸阅读: