我正在处理一个充满javascript对象的手,这些对象来自外部api库。我想使用redux将传入的对象存储在我的react应用程序中。
这些对象是es2015类,它们还带有两个方便的方法fromJSON
和toJSON
。因为我希望我的redux存储可序列化(因为它应该是)我需要一种方法将它们转换为普通对象(toJSON
通过给我一个字母来做到这一点)。在我的应用程序中,我需要使用这些对象,因为它们来自API,因为我需要附加到它们的方法,而api-client也需要这些特定的对象。
这是一个常见的需求,因为我无法在网上找到这个或者我走错了路吗?我将如何实现这样的转型?我目前正在考虑将es2015课程附加到我的操作中,并在我的Reducer中调用toJSON
。然后我可以创建从redux捕获json的特定选择器,并使用fromJSON
功能将它们转换回类(我必须记住它们吗?)。然后可以在mapStateToProps
中使用这些选择器进行映射,最后映射到道具。
让我知道您对此的看法以及如何/如果我可以改进此过程。
答案 0 :(得分:0)
Redux说状态应该是可序列化的。它应该是这样,因为在某些时候你可能需要在本地存储状态(通过某种形式的localstorage)。但这并不意味着国家必须由普通物体组成。
例如,许多项目使用Immutable.js对象作为其状态。有一个开销序列化Immutable.js对象。但是可以使用transit-immutable-js来完成。
根据我的理解,这个校长与你的问题类似。
我从你的问题中理解的是(无论你的意思是什么ES2015类)都可以通过fromJSON和toJSON方法进行反序列化/可串联化,这就是你所需要的。
因此,您可以使用" API"状态中的对象,仅当您需要在本地存储它时才将其序列化。