useEffect как componentDidUpdate

Есть ли возможность в функциональных компонентах React отслеживать момент только повторных изменений props. Те аналогично методу componentDidUpdate в классовых компонентах? Если вторым аргументом передавать список зависимостей props, то хук useEffect запустится также при первом рендеренге, а этого не хотелось бы. Делать проверку с использованием флага - также кажется не лучшим решением. Что посоветуете?

useEffect(() => {
       console.log('hook');
   }, [props.counter]);

Ответы (1 шт):

Автор решения: Sergei Kirjanov

Итак, начальное значение counter появляется в state родителя и приходит через props (или context) в дочерний. Оно так и продолжает это делать.

По ходу дела дочерний свой counter меняет, кладя себе в стейт.

Там, где counter используется, вызывается функция, дающая один из 2-х с приоритетом дочернего.


Альтернатива:

Можно использовать аргумент useState(initial), но это менее гибко.

Т. к. с первым вариантом можно, например, учитывать время/версии: дочерний поменял, но родитель позже решил, что он правее со своим новым значением.

→ Ссылка