Круговая зависимость в использовании - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь создать собственный крючок, который должен изменять значения перед использованием Formik setFieldValue().

Вот как выглядит крючок:

export const useCount = (tab) => {
  const { values, setFieldValue } = useFormikContext();

  const { count} = values;

  useEffect(() => {
    const handleChange = () => {
      if (tab === 0) {
        setFieldValue("count", count);
      } else if (tab === 1) {
        setFieldValue("count", count * 2);
      }
    };

    handleChange();
  }, [count]);
};

Проблема в рука состоит в том, что я получаю бесконечное l oop из-за того, что я меняю count внутри useEffect(). Есть какие-нибудь подсказки?

1 Ответ

0 голосов
/ 18 июня 2020

Замените count на tab в вашем useEffect, чтобы активировать этот эффект только при изменении tab

export const useCount = tab => {
  const {values: {count}, setFieldValue} = useFormikContext();

  const handleChange = () => {
     if (tab === 0) {
        setFieldValue("count", count);
     } else if (tab === 1) {
        setFieldValue("count", count * 2);
     }
  }

  useEffect(() => {
    handleChange();
  }, [tab]);
};
...