useEffect(( ) ⇒ { 로직 } , [ 디펜던시 어레이 ] )
디펜던시 어레이의 상태값이 변화할경우에만 useEffect가 실행
useEffect(() => {
// do something
}, [dependencyArray]);
가령, 만약 렌더링 후에 디스크립션을 업데이트하고 싶다면 다음과 같은 코드를 사용할 수 있습니다.
const [desc, setDesc] = useState('');
useEffect(() => {
setDesc('Description updated!');
}, [desc]);
useEffect는 return값을 가질 수 있습니다. 예를 들어 만약 렌더링된 훅을 제거하고 싶다면 다음과 같은 코드를 사용할 수 있습니다.
useEffect(() => {
// do something
return () => {
// do something when unmounting
};
}, [dependencyArray]);
가령, 만약 렌더링 훅이 비활성화되면 제거하고 싶다면 다음과 같은 코드를 사용할 수 있습니다.
useEffect(() => {
const disabledHandler = () => {
// do something when disabled
};
return () => disabledHandler();
}, [desc]);
const inputEl = useRef(null);
useEffect(() => {
// focus the input element
inputEl.current.focus();
}, []);
<input ref={inputEl} type="text" />
이러면 ThemeContext가 감싸고 있는 모든 컴포넌트가 props 건너건너 전달 안해도 가져올 수 있음
createContext의 초기값이 null이 아니고 어떠한 값이면 Provider없이 초기값을 useContext로 가져올 수 있음.
모든 컴포넌트들이 필요한 데이터가 있다면? Context API를 사용할 수 있다.