useEffect как componentDidUpdate
Есть ли возможность в функциональных компонентах React отслеживать момент только повторных изменений props. Те аналогично методу componentDidUpdate в классовых компонентах? Если вторым аргументом передавать список зависимостей props, то хук useEffect запустится также при первом рендеренге, а этого не хотелось бы. Делать проверку с использованием флага - также кажется не лучшим решением. Что посоветуете?
useEffect(() => {
console.log('hook');
}, [props.counter]);
Ответы (1 шт):
Итак, начальное значение counter появляется в state родителя и приходит через props (или context) в дочерний. Оно так и продолжает это делать.
По ходу дела дочерний свой counter меняет, кладя себе в стейт.
Там, где counter используется, вызывается функция, дающая один из 2-х с приоритетом дочернего.
Альтернатива:
Можно использовать аргумент useState(initial), но это менее гибко.
Т. к. с первым вариантом можно, например, учитывать время/версии: дочерний поменял, но родитель позже решил, что он правее со своим новым значением.