функция проверки debounce реагировать-jsonschema-формы - PullRequest
0 голосов
/ 07 марта 2020

У меня есть функциональный компонент, который использует react-jsonschema-form, и мне нужно отменить функцию, которую он запускает, для проверки себя. Компонент выглядит примерно так:

const Form = props => {
  const validate = (formData, errors) => {
    // run some code to validate the form
    return errors
  }

  return (
    <SchemaForm
      validate={(formData, errors) => validate(formData, errors)}
    />
  )

Я пытался использовать следующие подходы:

  1. , оборачивая функцию проверки в debounce:
const debouncedValidate = (formData, errors) => debounce(validate(formData, errors), 300);

return (
  <SchemaForm
    validate={(formData, errors) => validate(formData, errors)}
  />
)
... попробовал использовать Ref:
const debouncedValidate = useRef(debounce((formData, errors) => validate(formData, errors), 300);

return (
  <SchemaForm
    validate={(formData, errors) => debouncedValidate}
  />
)
... попытался использовать обратный вызов:
const debouncedValidate = useCallback(
  debounce((formData, errors) => validate(formData, errors), 300),
  [formData, errors]
);

return (
  <SchemaForm
    validate={(formData, errors) => debouncedValidate}
  />
)

1 привел к TypeError: Expected a function. Лода sh ожидает функцию без аргументов, как показано в их документах: _.debounce(func, [wait=0], [options={}]). Как 2, так и 3 приводят к ошибке Uncaught ReferenceError: formData is not defined.

Будем весьма благодарны за любые предложения относительно того, как решить эту проблему.

1 Ответ

0 голосов
/ 07 марта 2020

Попробуйте это:

const debouncedValidate =  _.debounce(validate, 300);


return (
  <SchemaForm
    validate={(formData, errors) => debouncedValidate(formData, errors)}
  />
)
...