Redux-Form Field 是脏的,因为力矩值不相等

Redux-Form Field is dirty because moment values aren't equal

在我们的应用程序中,我们从 API 调用 returns 的表单中获取 initialValues,例如:

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

然后我们将该值转换为片刻并将其保存到商店并从中填充 initialValues。如果我们然后 select 一个新值(例如,2001-01-01,也是一个时刻)并保存表单,我们从 api 读取响应,将其转换回时刻,然后把它扔回 initialValues。问题是,现在我们的领域很脏,因为 moment("2001-01-01") !== moment("2001-01-01").

我们的工作流程是不是错了?有没有更好的方法来处理管理 initialState?

问题是,如果 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