Это снова ваш собственный способ кодирования, однако, здесь есть небольшая информация, и вы всегда можете посмотреть на что-то большее.
useEffect(() => {
// do side effects
return () => /* cleanup */
}, [dependency, array]);
useLayoutEffect(() => {
// do side effects
return () => /* cleanup */
}, [dependency, array]);
useEffect
работает асинхронно и после того, как рендер отображается в экран.
вот несколько вещей на useEffect
- Вы вызываете рендеринг каким-либо образом (изменение состояния или повторный рендеринг родителя)
- React визуализирует ваш компонент (вызывает его)
- Экран визуально обновляется
- ТО запускается useEffect.
и
useLayoutEffect
, с другой стороны, выполняется синхронно после рендеринга, но до обновления экрана
- Вы вызываете рендеринг каким-либо образом (изменение состояния или родительский элемент). re-renders)
- React рендерит ваш компонент (вызывает его)
useLayoutEffect
запустится, и React ожидает его завершения sh. - Экран визуально обновлено
Так как @ Роберт предложил использовать useEffect
большую часть времени.