useEffect는 리액트 컴포넌트 내에서 Side Effect를 실행할 수 있게 하는 Hook입니다. 이 컴포넌트에서 실행하는 Side Effect는 브라우저 API를 이용해서 타이틀을 변경하는 것입니다.
다음 코드가 예시입니다. 클릭할 때마다 브라우저 탭이 변경됩니다.
import { useEffect, useState } from "react";
import "./styles.css";
export default function App() {
//배열에 곡을 저장
const proverbs = [
"bts - 다이너마이트 ",
"비오 카운팅스타",
"지코 아무노래 ",
"리쌍 광대 ",
"다듀 출첵"
];
// idx 초기값과 setIdx 업데이트함수를 선언하고 useState의 디폴트 값은 0으로 시작
const [idx, setIdx] = useState(0);
const handleClick = () => {
//인덱스가 4일경우 0으로 이동 아닐 경우 기존인덱스에서 +1
//반복순환되도록 코드 설정
setIdx(idx === proverbs.length - 1 ? 0 : idx + 1);
};
return (
<div className="App">
//버튼 클릭시 handleClick 호출
<button onClick={handleClick}>명곡 테스트</button>
// Proverb 함수에 props로 saying전달
// saying에는 proverbs[인덱스] 전달함
<Proverb saying={proverbs[idx]} />
</div>
);
}
function Proverb({ saying }) {
useEffect(() => {
document.title = saying;
});
return (
<div>
<h3>오늘의 명곡</h3>
<div>{saying}</div>
</div>
);
}
useEffect 함수의 첫번째 인자는 함수입니다. 해당 함수 내에서 구현하고자 하는 side effct를 실행하면 됩니다.
sideEffect의 예시로는 "데이터 가져오기, 구독 설정하기, 수동으로 React 컴포넌트의 Dom을 수정하는 것"이 있습니다.
그렇다면 useEffect는 언제 실행되나요??
매법 컴포넌트가 새롭게 렌더링 될 때 Effect Hook이 실행됩니다.
Hook을 쓸 떄 주의할 점
본 컨텐츠는 코드스테이츠와 리액트 공식문서를 참조했습니다.
리덕스의 3가지 규칙 (0) | 2023.01.22 |
---|---|
리덕스에서 사용하는 키워드 (0) | 2023.01.22 |
Side Effect (부수 효과)와 Pure Function(순수 함수) (0) | 2023.01.09 |
React - 배열 메소드 map을 이용한 반복 (0) | 2023.01.01 |
React - JSX란? (0) | 2022.12.20 |