React-reconciler | HookEffectTags (19.0.0)
효율적이고 빠른 처리를 위해 2진수 기반 비트연산을 사용합니다.
react/packages/react-reconciler/src/ReactHookEffectTags.js
export type HookFlags = number;
export const NoFlags = /* */ 0b0000; // 0
// Represents whether effect should fire.
export const HasEffect = /* */ 0b0001; // 1
// Represents the phase in which the effect (not the clean-up) fires.
export const Insertion = /* */ 0b0010; // 2
export const Layout = /* */ 0b0100; // 4
export const Passive = /* */ 0b1000; // 8
NoFlags
- Flag가 없음을 나타내지만 실제로 사용되지 않습니다.
HasEffect
useInsertionEffect
,useLayoutEffect
,useEffect
중 1개를 실행시켜야 함을 비트 연산자를 통해 나타냅니다.
commitHookPassiveMountEffects(
finishedWork,
HookPassive | HookHasEffect, // 9 (0001, 1000을 OR 비트연산)
);
Insertion
useInsertionEffect
를 나타냅니다.useLayoutEffect
실행 전 주로 Emotion, styled-components에서 스타일 태그를 삽입할 때 사용됩니다.
Layout
useLayoutEffect
를 나타냅니다.- DOM에 반영되기 전 실행되는 로직입니다.
Passive
useEffect
를 나타냅니다.- DOM에 반영된 후 실행되는 로직입니다.