컴포넌트가 렌더링 될 때마다 특정 작업을 실행할 수 있도록 하는 hook
ex) componentDidMount, componentDidUpdate, componentDidUnmount 시 특정 작업을 처리할 수 있다.
useEffect(function, deps): fn-수행함수, dep-배열형태, 검사하고자하는 특정 값 또는 빈 배열
ex)
useEffect(() => {
sthFunc(); //마운트 될 때만 실행된다.
}, []);
useEffect(() => {
sthFunc(); //렌더링 될 때마다 실행된다.
});
컴포넌트가 화면에 가장 처음 렌더링 됬을 때만 한번 실행하고 싶을 때,
deps위치에 빈 배열을 넣는다.
만약, 빈 배열을 생략한다면 리렌더링(ex.refresh) 될 때마다 실행된다.
useEffect(() => {
sthFunc(sth); //업데이트 될때 실행된다.
}, [sth])
특정 값이 업데이트 될 때, 실행하고 싶을 때는 deps 위치의 배열 안에 검사하고 싶은 값을 넣는다.
업데이트 될 때 뿐만 아니라 마운트 될 때도 실행된다.
useEffect(() => {
sthFunc(sth);
return () => {
sthFunc(sth);
}
}, []);
- cleanup함수 반환: return 뒤에 붙는 함수, useEffect() 함수 뒷처리 함수
deps에 특정 값을 넣게 되면 컴포넌트 마운트 시, 업데이트 시, 언마운트 시 값일 바뀌기 직전에 모두 호출된다.
useEffect 안에 사용하는 state, props가 있다면 useEffect의 deps에 넣어주는 것이 규칙이다.
deps 파라미터를 생략한다면 컴포넌트가 리렌더링될 때마다 useEffect함수가 호출된다.
[참고자료]