为什么Redux Store应该可序列化?

在阅读redux文档时,我发现该文档提到了这一点:

尽管如此,您仍应尽力保持状态可序列化。不要在其中放入任何您无法轻易转换为JSON的内容。

所以我的问题是,保持状态可序列化的好处是什么?或者,如果将不可序列化的数据放入存储区,我可能会遇到什么困难?

而且我相信这不是redux所独有的-Flux,甚至React本地状态也表明了同样的事情。


为了使我清楚,这里是一个例子。假设商店结构是这样的。

{

books: {

1: { id: 1, name: "Book 1", author_id: 4 }

},

authors: {

4: { id: 4, name: "Author 4" }

}

}

这一切看起来应该不错。但是,当我尝试访问“ Book 1的作者”时,我必须编写如下代码:

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那样在商店中保留“普通对象”呢?

任何想法表示赞赏。

回答:

直接来自redux常见问题解答:

强烈建议您仅将简单的可序列化对象,数组和基元放入存储中。从技术上讲,可以将不可序列化的项目插入到商店中,但是这样做会破坏保留和重新存储商店内容的能力,并干扰时间旅行调试。

如果您对持久性和时间旅行调试之类的东西可能无法按预期进行的工作感到满意,那么完全欢迎您将不可序列化的项目放入您的Redux存储中。最终,这是您的应用程序,如何实现它取决于您自己。与有关Redux的许多其他事情一样,只需确保您了解所涉及的权衡。


  • 什么是时间旅行调试?

以上是 为什么Redux Store应该可序列化? 的全部内容, 来源链接: utcz.com/qa/399684.html

回到顶部