在我们的应用程序中,我们从API调用中获取initialValues
表单,返回类似于:
{
myDate: "2000-01-01T00:00:00"
}
然后我们将该值转换为片刻并将其保存到商店并从中填充initialValues
。如果我们然后选择一个新值(比如2001-01-01,也是片刻)并保存表单,我们会从api中读回响应,将其转换回片刻,然后将其放回{{1} }。问题是,现在我们的字段很脏,因为initialValues
。
我们的工作流程错了吗?有没有更好的方法来处理moment("2001-01-01") !== moment("2001-01-01")
?
答案 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
。