我们应该在表单状态中存储原始值还是解析值

Should we store raw or parsed values in the form state

简介:

案例一:

我们应该在表单状态中存储什么:ISO 日期(字符串)或 JS 日期(对象)?

如果我们存储 ISO 日期,则必须在 onChange 处理程序中进行解析。

案例二:

我们应该在表单状态中存储什么:true(布尔值)或 "true"(字符串)?


一般的问题是:在表单状态中存储什么?

使用时可以解析的原始 onChange 值?

或者最好确保日期选择器始终 return ISO 日期或未定义,布尔字段始终 return 布尔或未定义等

案例一: 我像 JS 日期一样存储所有日期,如果我需要,然后我转换为 iso。
案例二: 布尔值(onChange())

我觉得真的没那么重要。在我的库 redux-formfinal-form 中,有 parse/format 函数来管理表单状态之间的转换。您可以使用它们,然后不必在提交时转换它,或者将它保留在您的输入组件想要的结构中直到提交然后转换它。我想后者在技术上会更快,因为它不需要在每次更改时进行两次转换。

我经常使用react-rte,一个所见即所得的编辑器,在每次按键时将原始格式转换为表单状态下的降价,速度非常快,所以......我认为这取决于感觉更多适合你。 ⚖️