我们应该在表单状态中存储原始值还是解析值
Should we store raw or parsed values in the form state
简介:
- 我们在 React 中使用 formik 或 final-form 作为表单管理器
- 我们从 API
中获取实体
- 我们需要映射该实体以编辑表单值
案例一:
- 实体有 ISO 日期 属性
- 我们使用一个日期选择器,其 onChange return 是一个 JS 日期对象
我们应该在表单状态中存储什么:ISO 日期(字符串)或 JS 日期(对象)?
如果我们存储 ISO 日期,则必须在 onChange 处理程序中进行解析。
案例二:
- 实体有一个布尔值属性
- 我们使用 select 元素,其 onChange return 是一个字符串
我们应该在表单状态中存储什么:true(布尔值)或 "true"(字符串)?
一般的问题是:在表单状态中存储什么?
使用时可以解析的原始 onChange 值?
或者最好确保日期选择器始终 return ISO 日期或未定义,布尔字段始终 return 布尔或未定义等
案例一:
我像 JS 日期一样存储所有日期,如果我需要,然后我转换为 iso。
案例二:
布尔值(onChange())
我觉得真的没那么重要。在我的库 redux-form
和 final-form
中,有 parse
/format
函数来管理表单状态之间的转换。您可以使用它们,然后不必在提交时转换它,或者将它保留在您的输入组件想要的结构中直到提交然后转换它。我想后者在技术上会更快,因为它不需要在每次更改时进行两次转换。
我经常使用react-rte
,一个所见即所得的编辑器,在每次按键时将原始格式转换为表单状态下的降价,速度非常快,所以......我认为这取决于感觉更多适合你。 ⚖️
简介:
- 我们在 React 中使用 formik 或 final-form 作为表单管理器
- 我们从 API 中获取实体
- 我们需要映射该实体以编辑表单值
案例一:
- 实体有 ISO 日期 属性
- 我们使用一个日期选择器,其 onChange return 是一个 JS 日期对象
我们应该在表单状态中存储什么:ISO 日期(字符串)或 JS 日期(对象)?
如果我们存储 ISO 日期,则必须在 onChange 处理程序中进行解析。
案例二:
- 实体有一个布尔值属性
- 我们使用 select 元素,其 onChange return 是一个字符串
我们应该在表单状态中存储什么:true(布尔值)或 "true"(字符串)?
一般的问题是:在表单状态中存储什么?
使用时可以解析的原始 onChange 值?
或者最好确保日期选择器始终 return ISO 日期或未定义,布尔字段始终 return 布尔或未定义等
案例一:
我像 JS 日期一样存储所有日期,如果我需要,然后我转换为 iso。
案例二:
布尔值(onChange())
我觉得真的没那么重要。在我的库 redux-form
和 final-form
中,有 parse
/format
函数来管理表单状态之间的转换。您可以使用它们,然后不必在提交时转换它,或者将它保留在您的输入组件想要的结构中直到提交然后转换它。我想后者在技术上会更快,因为它不需要在每次更改时进行两次转换。
我经常使用react-rte
,一个所见即所得的编辑器,在每次按键时将原始格式转换为表单状态下的降价,速度非常快,所以......我认为这取决于感觉更多适合你。 ⚖️