Redux状态和动量JS

Redux状态和动量JS,redux,react-redux,momentjs,Redux,React Redux,Momentjs,我在redux州有几次约会 在我的应用程序中,我只想操纵对象 为了实现这一点,我添加了一个函数,它接受我的AJAX查询,并记录我的所有日期 但是当我检查商店里的东西时,我仍然有一个字符串(“2018-07-10T08:31:09.877Z”),它似乎是我的力矩对象的JSON.stringify版本 我该怎么处理这件事?我知道我可以在存储中使用侦听器,但是,在将状态反序列化到对象中时,这不会添加处理 我感到惊讶的是,我没有在网上找到任何东西,此外,这是更具体的,因为它涉及持久化商店 CheersR

我在redux州有几次约会

在我的应用程序中,我只想操纵对象

为了实现这一点,我添加了一个函数,它接受我的AJAX查询,并记录我的所有日期

但是当我检查商店里的东西时,我仍然有一个字符串(
“2018-07-10T08:31:09.877Z”
),它似乎是我的力矩对象的
JSON.stringify
版本

我该怎么处理这件事?我知道我可以在存储中使用
侦听器
,但是,在将状态反序列化到对象中时,这不会添加处理

我感到惊讶的是,我没有在网上找到任何东西,此外,这是更具体的,因为它涉及持久化商店


Cheers

Redux文档强烈建议只在存储中放置普通的可序列化对象

正因为如此,我正在接近与您相同的情况,即具有选择器层,在该层中,我以适当的格式获取所需的存储数据,然后在组件中使用格式化(计算)数据

下面是我可以向您推荐的流程:

  • 在UNIX时间戳中保留存储的日期
  • 有一个选择器层,您将在其中访问存储并将UNIX时间戳转换为矩对象。你可以和我一起玩
  • 在您的组件中,您将通过调用选择器获得商店的对象
  • 强烈建议您只放置普通的可序列化对象, 将数组和原语输入到您的存储中。从技术上讲,这是可能的 将不可序列化的项插入存储,但这样做可能会中断 存储内容的持久化和再水化能力 as会干扰时间旅行调试

    如果您对持久性和时间旅行调试之类的事情没有意见的话 可能无法按预期工作,则完全欢迎您使用 将不可序列化的项目放入Redux存储。最终,它是 您的应用程序以及如何实现它取决于您。和许多人一样 关于Redux的其他事情,请确保您了解什么是权衡 都涉及到了


    对于未来的读者来说,我最终完全改变了主意:使用选择器是可行的,但我也有来自存储区其他部分表单输入的数据,而这些数据在处理
    重新选择时没有意义

    因此,我决定以ISO字符串格式存储日期(
    “2018-07-10T08:31:09.877Z”
    ),并尽可能晚地对日期进行调整(例如

    这是不太优雅,可能有点不太性能,但我有更多的控制


    如果有人提出更好的解决方案,我很乐意阅读

    是的,我也提出了重新选择的解决方案。我想那时没有太多的选择。但我仍然不清楚redux是否会一言不发地对存储进行序列化。如果是这样的话,访问一些反序列化的函数也是有意义的,不是吗?我的意思是,我如何确保首先序列化对象?首先,由于性能原因,
    redux
    库本身不会自动序列化对象的。这是你自己的事。根据您的用例,我猜您正在使用一个库或中间件来为您完成这项工作。例如,
    redux persist
    library执行自动序列化-当状态对象被持久化时,它首先使用JSON.stringify()进行序列化。实际上,最好是序列化存储上的矩对象。我只是在服务器端渲染(SSR)使用Next.js时遇到了水化存储的问题,因为我没有序列化我的矩对象。。。