🔑 effects란?
React에서 "effects"란 주로 컴포넌트 외부의 시스템에 접근하거나 조작하는 동작을 의미합니다. 이러한 effects는 주로 데이터를 가져오거나 변경하고, DOM을 조작하거나, 이벤트 리스너를 등록/해제하고, 타이머를 설정/해제하는 등의 작업을 포함
useEffect가 하는일은 무엇일까요?
-> useEffect Hook을 이용하여 우리는 React에게 컴포넌트가 렌더링 이후에 어떤 일을 수행해야하는 지를 말한다.
-> React는 우리가 넘긴 함수를 기억했다가(이 함수를 ‘effect’라고 부릅니다) DOM 업데이트를 수행한 이후에 불러낼 것입니다.
Ex) API를 불러내는 일
클린업 함수
: side effects는 clean-up이 필요한 것과 필요하지 않을 것으로 나뉨
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `You clicked ${count} times`;
});
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
정리(clean-up)를 이용하는 Effects
import React, { useState, useEffect } from 'react';
function FriendStatus(props) {
const [isOnline, setIsOnline] = useState(null);
useEffect(() => {
function handleStatusChange(status) {
setIsOnline(status.isOnline);
}
ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
// effect 이후에 어떻게 정리(clean-up)할 것인지 표시합니다.
return function cleanup() {
ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
};
});
if (isOnline === null) {
return 'Loading...';
}
return isOnline ? 'Online' : 'Offline';
}