2025년 9월 23일 화요일 (84일차)

Jeonghoon·2025년 9월 23일

jeonghoon's Study

목록 보기
87/128

⚛️ React Hook, Router, Redux 정리


🪝 React Hook

React의 핵심 기능으로, 컴포넌트의 생명주기(Lifecycle) 에 따라 특정 시점에 함수를 실행하도록 돕는 기능입니다.

Hook선언 문법설명특징
useStateconst [변수, set변수] = useState(초기값);컴포넌트 내 상태(값) 관리상태 변경 시 컴포넌트 리렌더링 발생
useRefconst 변수명 = useRef(초기값);값 또는 DOM 참조값 변경 시 리렌더링되지 않음
useEffectuseEffect(() => {}, [의존성 배열]);컴포넌트가 렌더링될 때 자동 실행생명주기 이벤트 관리 가능

💡 요약: 입력값을 UI에 표시할 때는 useState, 내부 값 관리용은 useRef, 렌더링 시점에 특정 코드 실행은 useEffect 사용.


🌐 React Router

React는 SPA(Single Page Application) 구조이므로, 페이지 전환 시 HTML이 새로 고쳐지지 않고 컴포넌트만 변경됩니다.

🚀 기본 사용법

단계설명예시
1️⃣React Router 설치npm i react-router-dom
2️⃣BrowserRouter로 컴포넌트 감싸기<BrowserRouter> ... </BrowserRouter>
3️⃣가상의 URL(Path)와 컴포넌트 연결<Route path="가상URL" element={<컴포넌트/>} />
4️⃣예외 페이지 설정<Route path="*" element={<NotFound/>}/>
<Routes>
  <Route path="/" element={<Home/>} />
  <Route path="/login" element={<Login/>} />
  <Route path="*" element={<Error/>} />
</Routes>

⚡ URL & 매개변수

기능설명예시
path 변수 전달URL에 변수를 포함<Route path="user/:id" element={<User/>}/>
쿼리스트링 가져오기useSearchParams() 사용searchParams.get('key')
path 변수 가져오기useParams() 사용const { id } = useParams();

🔗 이동 방법

상황방법예시
링크 클릭 시 이동Link 컴포넌트 사용<Link to="/login">로그인</Link>
JS로 프로그래밍 이동useNavigate() 사용const nav = useNavigate(); nav('/home');

🧩 Redux (전역 상태관리 라이브러리)

React에서 여러 컴포넌트 간의 상태(값)를 효율적으로 공유하기 위한 라이브러리입니다.

💼 Redux 개념 요약

구성요소역할설명
Store중앙 저장소모든 상태를 관리하는 공간 (configureStore())
Slice상태 정의상태(initialState)와 reducer를 포함 (createSlice())
Reducer상태 변경 함수action에 따른 state 변경 로직
Action상태 변경 요청 신호reducer를 호출하여 상태 수정

⚙️ 실행 흐름

1️⃣ 일반 컴포넌트(ex. LoginPage)에서 action 실행dispatch(login())
2️⃣ Action이 Store로 전달됨
3️⃣ Store에서 등록된 Reducer가 상태(state)를 수정함


⚡ Redux 사용법 (기본 패턴)

단계설명코드 예시
1️⃣전역변수 초기값 정의const initialState = { key: value };
2️⃣Slice 생성createSlice({ name, initialState, reducers })
3️⃣Reducer 및 Action 내보내기export const { 액션명 } = Slice.actions; export default Slice.reducer;
4️⃣Store 생성 후 등록configureStore({ reducer: { 슬라이스명: 슬라이스리듀서 } })
5️⃣상태 조회const state = useSelector((state) => state.슬라이스명);
6️⃣상태 변경const dispatch = useDispatch(); dispatch(액션명());
7️⃣컴포넌트 전환const nav = useNavigate(); nav('/path');

🧠 Redux 활용 예시

상황사용 이유
전역변수가 필요할 때앱 전체에서 공통 데이터 관리
여러 컴포넌트 간 상태 공유중복 상태 관리 방지
props 전달이 복잡할 때상태 중앙 집중화로 코드 간결화
로그인, 테마, 사용자 정보공통 상태 유지 및 동기화

0개의 댓글