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
。
在我们的应用程序中,我们从 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
。