useLayoutEffect를 사용했습니다.
2315 단어 reactjavascripthookswebdev
단순화합시다.
useLayoutEffect와 useEffect의 차이점은 각 후크가 실행되는 시점입니다.
React의 라이프사이클:
useLayoutEffect
가 실행됩니다. useEffect
가 실행됩니다. 보시다시피
useLayoutEffect
는 useEffect
보다 먼저 발생하고 더 중요한 것은 브라우저가 UI의 변경 사항을 나타내기 전에 발생합니다.이것이 깜박이는 UI 문제에 대한 해결책이
useEffect
에서 useLayoutEffect
로 전환된 이유입니다.언제 useLayoutEffect를 선호해야 합니까?
DOM을 업데이트하고 초기 마운트에서 UI를 시각적으로 변경해야 하는 경우
useLayoutEffect
를 사용해야 합니다.다음은 내가 가진 깜박임 문제를 해결하기 위해
useLayoutEffect
를 사용한 실제 사례의 근사치입니다.고장:
click
버튼을 누르면 상태가 초기 상태로 재설정됩니다. In the real example I didn't press a button to initialize the state, the component unmounted and then mounted again which caused the state to re-intialize and the UI to flicker.
The number is: [number]
텍스트가 표시되지 않습니다.{displayedNumber && <div> The number is: {displayedNumber}</div>}
이것은 깜박임의 원인이 되는 선입니다. 동시에
displayedNumber
상태를 (useEffect
의) 숫자와 동일하게 업데이트하기 때문입니다.따라서 텍스트를 빠르게 제거하고 반환하여 UI가 깜박입니다.
useEffect
를 사용할 때 브라우저가 페인트한 후에 발생하기 때문에 UI 깜박임이 있습니다.useLayoutEffect
를 사용할 때 브라우저가 페인트되기 전에 UI 깜박임이 발생하지 않습니다.Reference
이 문제에 관하여(useLayoutEffect를 사용했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/danielbellmas/i-used-uselayouteffect-19l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)