我正在使用Formik Forms和Redux在React应用程序上进行状态管理。我想让用户能够以Formik形式编辑他们的联系信息,并提交给我们的API,这些API会破坏PATCH请求。
当前,我们首先允许用户编辑Formik表单中的所有字段并提交。假设表单中存在初始值,我想知道是否存在使用JSON修补程序仅在仅更改后的值上发送PATCH请求的干净方法。如果没有,那么有一种方法可以发送表单值,而无需像下面这样用大量带有替换对象的对象数组进行大量调用:
动作创建者有效负载示例:
const editData = {
metadata: {
lastUpdated: `${updatedTime}`,
},
patch: [
{
op: 'replace',
path: '/name/firstName',
value: `${formValues.firstName}`,
},
{
op: 'replace',
path: '/name/lastName',
value: `${formValues.lastName}`,
},
{ op: 'replace', path: '/type', value: `${formValues.type}` },
{ op: 'replace', path: '/username', value: `${formValues.username}` },
{ op: 'replace', path: '/email', value: `${formValues.email}` },
{ op: 'replace', path: '/groups', value: formValues.groups },
],
};
我无法找到一种模式或有效的解决方案。大概是一些简单的ES6-7生成器?不知道...
更新:我能够从研究中获得一些信息,即在onSubmit的initialValues
和values
上使用diff函数可以只为您提供所需的值提交。这对于常规的HTTP PATCH请求有效,但是使用JSON Patch http://jsonpatch.com/,我仍然不确定如何仅发送脏字段-尤其是在存在嵌套数组或对象值的情况下。