-
41.기본이 탄탄해야한다. 탄앤탄스 [useEffect에 대한 고찰]Java Script & Type Script 2023. 3. 7. 16:22728x90
// 모든 리렌더링마다 로그가 찍힘 useEffect(() => { console.log("call useEffect after every re-render"); }); // value 변수 값이 변할 때만 로그가 찍힘 useEffect(() => { console.log("call useEffect when value changes"); }, [value]); // 첫 렌더링 후에만 로그가 찍힘. useEffect(() => { console.log("call useEffect only after initial render"); }, []);
#Lifecycle
컴포넌트가 페이지에 장착된다 (mount )
컴포넌트가 업데이트된다 (update)
컴포넌트가 삭제된다 (unmount)
라이프사이클 중간중간 코드 실행 가능class Detail2 extends React.Component { componentDidMount(){ //마운트될 때 실행할 코드 } componentDidUpdate(){ //업뎃될 때 실행할 코드 } componentWillunmount(){ //언마운트 될 때 실행할 코드 } }
function Detail(props){ useEffect(()=> { //여기 적는 코드는 mount, update될 때 실행됨 }) }
useEffect안에있는 코드는 html렌더링 후 동작한다. -> 효율적인 동작. html을 먼저 보여주고 어려운 작업 수행. 빠른 렌더링. 시간 오래걸리는 코드를 useEffect내부에 적으면 좋음. 어려운 연산, 서버에서 데이터 가져오는 작업, 타이머 장착, 등을 많이 이용.
dependency를 추가하면 마운트될 때 + 그 변수가 변할 때만 실행됨.
dependency를 비워둔다 -> 최초 마운트될 때만 한번 실행되고 업데이트될 떄는 실행되지 않음.
useEffect 동작 전에 실행되는 clean up function
return ()-> {}function App() { const [a, setA] = useState(true); useEffect(() => { const timer = setTimeout(() => setA(false), 3000); return () => { clearTimeout(timer); //타이머 제거하는 함수 }; }, []); return <div>{a && <Popup>3초 내 구매하면 완쁠완 혜택!</Popup>}</div>; }
서버로 데이터 요청할 때도 useEffect많이 쓰는데 업데이트 될 때마다 재요청하면 안되니까, cleanup function을 활용.
return ()=> {
//기존데이터요청은 제거해주세요 하는 함수
}
`cleanup` 함수는 `useEffect` 에 대한 뒷정리를 해준다고 이해하시면 되는데요, `deps` 가 비어있는 경우에는 컴포넌트가 사라질 때 `cleanup` 함수가 호출됩니다.
[번역] useEffect 완벽 가이드
Dan Abramov의 'A Complete Guide to useEffect 번역'
www.rinae.dev
728x90'Java Script & Type Script' 카테고리의 다른 글
36.깃헙액션 배포용 환경변수파일 생성하기 env 깃헙액션 시크릿활용하기 (0) 2023.03.14 35.[React] Final project-마지막주 UT 피드백1-흐릿한 아이콘 문제 FIGMA 피그마 아이콘 svg export 로해결! (0) 2023.03.10 33. 항해99 실전프로젝트- 네이버아이디로 로그인 (네이버로그인 API) 소셜로그인 네이버, 네이버로그인 원형 버튼, 버튼 커스텀, 네이버로그인 로그아웃방법, 리액트 코드 (0) 2023.02.27 28. Server Sent Event (SSE) (0) 2023.02.18 26. [React] 태그 내 스타일속성 넣기, 별점 구현하기 (0) 2023.01.31