React-хуки используют, влияют только на обновление?

Проверьте

tar cvpzf zip_folder.tgz . --exclude=./public --exclude=./tmp --exclude=./log --exclude=fileName
18
задан Shubham Khatri 12 March 2019 в 11:36
поделиться

1 ответ

И Shubham и Mario предлагают правильный подход, однако код является все еще неполным и не рассматривает следующие случаи.

  1. , Если компонент размонтировался, он должен сбросить, это - флаг
  2. передача effect, функции можно было возвратить функцию очистки из него, который никогда не становился бы названным

Совместное использование ниже более полного кода, который покрывает выше двух недостающих случаев:

import React from 'react';

const useIsMounted = function useIsMounted() {
  const isMounted = React.useRef(false);

  React.useEffect(function setIsMounted() {
    isMounted.current = true;

    return function cleanupSetIsMounted() {
      isMounted.current = false;
    };
  }, []);

  return isMounted;
};

const useUpdateEffect = function useUpdateEffect(effect, dependencies) {
  const isMounted = useIsMounted();
  const isInitialMount = React.useRef(true);

  React.useEffect(() => {
    let effectCleanupFunc = function noop() {};

    if (isInitialMount.current) {
      isInitialMount.current = false;
    } else {
      effectCleanupFunc = effect() || effectCleanupFunc;
    }
    return () => {
      effectCleanupFunc();
      if (!isMounted.current) {
        isInitialMount.current = true;
      }
    };
  }, dependencies); // eslint-disable-line react-hooks/exhaustive-deps
};
0
ответ дан 29 November 2019 в 04:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: