State Lifecycle, useEffect

CMK·2023년 2월 5일
0

State 생명주기(Lifecycle)이란 컴포넌트가 실행되거나 수정되거나 제거될 때 허출되는 메서드이다

componentDidMout(){
	console.log("화면이 렌더링 되고 실행!")
	}

componentDidUpdate(){
	console.log("props, state같은 값이 변경되면 실행")
	}
    
componentWillUnmount(){
	console.log("컴포넌트가 사라질때 즉 화면이 이동될때 실행")
	}

위와같이 작동을 하게 된다 그럼 함수형 컴포넌트에게는 이런게 없을까??
물론 존재한다

바로 useEffect 이다

useEffect(()=>{
		console.log("화면이 렌더링 되고 실행!")
	},[])
// setState가 리랜더링 시켜도 작동 안함!!!
// useEffect 안에서의 setState는 예외
// componentDidMout와 비슷하다

useEffect(()=>{
		console.log("화면이 렌더링 되고 실행 및 []안에 있는게 수정, 실행 될때마다 실행")
	},[state])
// componentDidMout, componentDidUpdate가 합쳐 졌다고 생각하자

useEffect(()=>{
		console.log("뭐 마우스가 움직이거나 뭐 하나라도 바뀌면 실행!!")
	})
// 즉 무한으로 계속 실행될 수 있다!

useEffect(()=>{

		return(()=>{
			console.log("componentWillUnmount와 비슷하게 작동!!")
		})
	},[])
// return 위에 값을 넣으면 다른 방법들과 혼용하여 사용 가능하다

useEffect에서 []은 의존성 배열로 있고 없고의 차이의 변화가 큼으로 잘 사용해야 한다

또한 useEffect 안에서 setState의 사용시에는 무한 루프 (state 변경 -> 리랜더 -> state 변경....)이 될수 있으니 정말 필요한 경우가 아니라면 지양하자

0개의 댓글