JSON PATCH请求:仅脏字段,并在操作创建者中使用JSON PATCH发送

时间:2019-02-26 16:44:53

标签: javascript reactjs redux formik json-patch

我正在使用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的initialValuesvalues上使用diff函数可以只为您提供所需的值提交。这对于常规的HTTP PATCH请求有效,但是使用JSON Patch http://jsonpatch.com/,我仍然不确定如何仅发送脏字段-尤其是在存在嵌套数组或对象值的情况下。

0 个答案:

没有答案