我们应该以表单状态存储原始值还是解析后的值

时间:2018-09-07 06:58:06

标签: javascript reactjs redux-form formik react-final-form

简介:

  • 我们在反应中使用formik或final-form作为表单管理器
  • 我们从API获取实体
  • 我们需要映射该实体以编辑表单值

情况1:

  • 实体具有ISO日期属性
  • 我们使用日期选择器,其onChange返回一个JS日期对象

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

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

情况2:

  • 实体具有布尔属性
  • 我们使用select元素,其onChange返回一个字符串

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


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

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

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

2 个答案:

答案 0 :(得分:1)

情况1: 我存储了所有日期,例如JS日期,如果需要的话,我会转换为iso。
情况2: 布尔值(onChange())

答案 1 :(得分:0)

我认为这没什么大不了的。对于我的库redux-formfinal-form,有parse / format个函数来管理与表单状态之间的转换。您可以使用它们,然后不必在提交时进行转换,也可以将其保留在输入组件所需的结构中,直到提交然后进行转换。我认为后者从技术上讲会更快,因为它不需要每次更改都进行两次转换。

我经常使用react-rte(所见即所得的编辑器),并在每次按键时将原始格式转换为markdown形式的markdown,而且速度非常快,所以...我认为这取决于感觉是否正确您。 ⚖️