Метод clear будет вызываться сразу после срабатывания useEffect Lifecycle (componentdidmount) - PullRequest
0 голосов
/ 25 марта 2020

Я написал ловушку обычного, чтобы предотвратить любые неиспользуемые обновления в данных, которые используют с ними useEffect (например, когда я отправляю объект в зависимостях useEffect, которые вызывают срабатывание useEffect каждый раз или при отправке объекта в useEffect, кроме слоистых данных) in объект был изменен, но useEffect не может их обнаружить и ничего не делать)

export const useUpdateEffect = (callback, dependencies) => {

  const previousDeps = useRef(null);

  useEffect(() => {
    const haveChange = JSON.stringify(dependencies) === JSON.stringify(previousDeps.current)
    if (haveChange) return;

    const returnCallback = callback(previousDeps.current);

    return () => {

      if (typeIs(returnCallback, "Function")) {
        returnCallback();
      }

      previousDeps.current = dependencies;
    }
  }, [callback, dependencies])
}

Если вы видите, что этот хук выполняет свою работу, когда dependencies было изменено (с любым слоем). также этот хук сохраняет depenedencies и использует их для сравнения с текущим. (как componentDidUpdate).

, но проблема в этом коде заключается в том, что, когда я пытаюсь отправить чистый метод с возвратом. вызов метода clean сразу после того, как тело useEffect работает.

Мне нужно знать, в чем проблема этого хука. чтобы увидеть проблему, попробуйте следующий код с useUpdateEffect и посмотрите, что я имею в виду. { ссылка }

...