У меня есть небольшая функция, которая просматривает список доступных в настоящее время ресурсов, и когда вы переходите к созданию и редактированию ресурса, она проверяет правильность имени ресурса (если оно существует или нет).
Вот утилита:
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}
Но это не работает.Кроме того, когда я вызываю компонент, я передаю и ему inEditMode
, и currentResource
.Что я тут не так делаю .. ??