从验证检查中排除当前资源

时间:2019-05-28 06:35:39

标签: javascript reactjs validation formik

我有一个小功能,它可以查看当前可用资源的列表,当您创建和编辑资源时,它会检查资源名称的有效性(如果存在或不存在)。

以下是实用程序:

export const validateResourceName = value =>
  listResources({ once: true }).then(({ data }) => {
    if (Array.isArray(data) && data.find(resourceData => resourceData.name === value)) {
      // eslint-disable-next-line no-throw-literal
      throw 'Resource already exists';
    }
  });

现在,我希望仅在ADD_RESOURCE上执行此操作。在EDIT_RESOURCE上,它应引发此错误,而不检查当前正在编辑的资源名称。 Allowing to edit a resource without changing name

所以我创建了另一个函数,作为回报,它在我的组件验证道具中而不是常规的调用。

export const validateNonCurrentResourcepName = (value, currentResource) =>
  listResources({ once: true }).then(({ data }) => {
    if (
      Array.isArray(data) &&
      data.find(resourceData => resourceData.name === value) &&
      data.map(resourceData => resourceData.name === currentResource)
    ) {
      // eslint-disable-next-line no-throw-literal
      throw 'Resource already exists';
    }
  });

我这样称呼它:

const debouncedValidateNonCurrentResourceName = debounce(validateNonCurrentResourceName, 250);

validate={inEditMode ? debouncedValidateResourceName : debouncedValidateNonCurrentResourceName}

但是它不起作用。另外,当我调用组件时,我同时传递了他的inEditModecurrentResource。我在这里做错什么了.. ??

0 个答案:

没有答案