Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我们应该在表单状态中存储原始或解析的值吗_Javascript_Reactjs_Redux Form_Formik_React Final Form - Fatal编程技术网

Javascript 我们应该在表单状态中存储原始或解析的值吗

Javascript 我们应该在表单状态中存储原始或解析的值吗,javascript,reactjs,redux-form,formik,react-final-form,Javascript,Reactjs,Redux Form,Formik,React Final Form,简介: 我们使用formik或final form作为react中的表单管理器 我们从API中获取实体 我们需要映射该实体以编辑表单值 案例1: 实体具有ISO日期属性 我们使用一个日期选择器,其onChange返回一个JS日期对象 我们应该在表单状态中存储什么:ISO日期(字符串)还是JS日期(对象) 若我们存储ISO日期,解析必须在onChange处理程序中完成 案例2: 实体具有布尔属性 我们使用select元素,其onChange返回一个字符串 我们应该在表单状态中存储什么:

简介:

  • 我们使用formik或final form作为react中的表单管理器
  • 我们从API中获取实体
  • 我们需要映射该实体以编辑表单值
案例1:

  • 实体具有ISO日期属性
  • 我们使用一个日期选择器,其onChange返回一个JS日期对象
我们应该在表单状态中存储什么:ISO日期(字符串)还是JS日期(对象)

若我们存储ISO日期,解析必须在onChange处理程序中完成

案例2:

  • 实体具有布尔属性
  • 我们使用select元素,其onChange返回一个字符串
我们应该在表单状态中存储什么:true(布尔值)或“true”(字符串)


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

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

或者,最好确保日期选择器始终返回ISO date或undefined,布尔字段始终返回布尔值或undefined,等等。

案例1: 我像JS date一样存储所有日期,如果需要,我将转换为iso。
案例2:
Boolean(onChange())

我认为这真的没那么重要。对于我的LIB,
redux form
final form
,有
parse
/
format
函数来管理表单状态的转换。您可以使用它们,然后不必在提交时对其进行转换,或者将其保留在输入组件所需的结构中,直到提交后再进行转换。我认为后者在技术上更快,因为它不需要每次更改都进行两次转换


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

这里的优点是,用户界面中的客户端日期操作比客户端-服务器数据传输更频繁,例如,您将拥有排序/筛选/人性化的日期显示等。因此,将日期保持在JS格式有助于简化操作。数据适配器层可以处理JS Date->ISO转换。好的,那么适配器应该从API=>JS Date映射ISO Date,我们使用它作为初始表单值?或者我们可以将其保留为ISO,直到日期选择器将其转换为JS日期?