我的还原状态有几个约会。
在我的应用中,我只想操作moment个对象。
为此,我添加了一个函数,该函数接受AJAX查询,并对所有日期进行 momentize 。
但是当我检查商店里的东西时,我仍然有一个字符串("2018-07-10T08:31:09.877Z"
),它似乎是我的矩对象的JSON.stringify
版本。
我应该如何处理?我知道我可以在商店中购买listeners
,但是在将状态反序列化为对象时,这不会添加处理。
令我感到惊讶的是,除了this issue之外,我在网上还没有找到其他任何东西,因为它可以处理商店的持久性,因此更为具体。
欢呼声
答案 0 :(得分:0)
Redux文档强烈建议仅将普通的可序列化对象放入商店中。
正因为如此,我正在处理与您的情况相同的一个 Selector层,在该情况下,我以正确的格式获取了所需的存储数据,然后使用了格式化的(计算出的)组件中的数据。
因此,我可以向您推荐以下流程:
Can I put functions, promises, or other non-serializable items in my store state?
强烈建议您只放置简单的可序列化对象, 数组和图元放入您的商店。从技术上讲 将不可序列化的商品插入商店,但这样做可能会破坏 持久性和补给存储内容的能力 会干扰时间旅行调试。
如果您对持久性和时间旅行调试之类的东西没问题 可能无法按预期工作,那么我们完全欢迎您 将不可序列化的商品放入您的Redux商店。最终, 您的应用程序以及如何实现它取决于您。和许多一样 关于Redux的其他事情,只要确保您了解什么折衷 参与其中。
答案 1 :(得分:0)
对于将来的读者,我最终完全改变了主意:使用选择器有效,但是我也有来自商店其他部分表单输入的数据,而使用{{ 1}}。
因此,我决定将日期存储为ISO字符串格式(reselect
),并尽可能晚地"2018-07-10T08:31:09.877Z"
对其进行大小写(例如moment
)。
这不太优雅,性能可能会降低一些,但我有更多的控制权。
如果有人想出更好的解决方案,我很乐意阅读!