Как исправить отсутствие предупреждения о зависимости при использовании крючка useEffect для обновления состояния при изменении реквизита

#reactjs #redux #use-effect

#reactjs #redux #использование-эффект

Вопрос:

мой компонент получает три реквизита. urlText — это строка, а setSelectedText — это действие redux для обновления состояния из connect() и clearPage, которое является другим действием redux для очистки состояния.

Я хочу обновить состояние только при изменении urlText. и я хочу очистить состояние при размонтировании.

  I get this eslint warning `react-hooks/exhaustive-deps: React Hook useEffect has missing dependencies: setSelectedText`

 warning `react-hooks/exhaustive-deps: React Hook useEffect has missing dependencies: clearPage`


const Component = ({ urlText, setSelectedText, clearPage }) => {
  useEffect(() => {
    setSelectedText(urlText);
  }, [urlText]);

  useEffect(() => {
    return () => {
      clearPage();
    };
  }, []);
};
  

Ответ №1:

Это никак не повлияет на то, как выполняется ваш скрипт, но линтер предупреждает вас изменить его на:

 useEffect(() => {
    setSelectedText(
        urlText
    );
}, [setSelectedText, urlText]);

useEffect(() => {
    return () => {
        clearPage();
    };
}, [clearPage]);
  

Хотя последнее можно упростить до:

 useEffect(() => clearPage, clearPage);