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中获取实体
- 我们需要映射该实体以编辑表单值
- 实体具有ISO日期属性
- 我们使用一个日期选择器,其onChange返回一个JS日期对象
- 实体具有布尔属性
- 我们使用select元素,其onChange返回一个字符串
一般的问题是:在表单状态中存储什么 使用时可以解析的原始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日期?