Redux-Form字段很脏,因为时刻值不相等

时间:2017-03-06 21:05:27

标签: momentjs redux-form

在我们的应用程序中,我们从API调用中获取initialValues表单,返回类似于:

{
  myDate: "2000-01-01T00:00:00"
}

然后我们将该值转换为片刻并将其保存到商店并从中填充initialValues。如果我们然后选择一个新值(比如2001-01-01,也是片刻)并保存表单,我们会从api中读回响应,将其转换回片刻,然后将其放回{{1} }。问题是,现在我们的字段很脏,因为initialValues

我们的工作流程错了吗?有没有更好的方法来处理moment("2001-01-01") !== moment("2001-01-01")

1 个答案:

答案 0 :(得分:1)

问题是,如果moment("2001-01-01")不等于moment("2001-01-01"),那么redux-form将始终认为如果重新初始化myDate的值,则表单状态已更改,即使用于创建Moment实例的值是相同的。

修复很简单:不要在redux商店中存储moment个对象。而是使用格式化字符串(如"2000-01-01T00:00:00")或数字(unix时间戳)来表示redux存储中的日期时间信息。如果您需要执行操作,例如date1.isBefore(date2),则可以暂时将其转换为Moment