在阅读 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 一样将“普通对象”保存在商店中?
任何想法表示赞赏。