부모 컴포넌트에서 -> 자식 컴포넌트로 props 를통해 state값을 넘겨 자식 컴포넌트는 props로 넘겨온 값을 넘겨받아 사용.
부모기준 형제 컴포넌트 사이에서는 데이터를 주고 받을 수 없는 구조. ( 단방향 기준으로 데이터 전달 === 부모에서 -> 자식 )
간단한 구조에서 데이터를 주고 받기에는 무리가 없지만 부모에서 가장 막내자식 컴포넌트가 100번 넘게 계속 바통 터치하듯 넘겨받는다고 생각해보자....(어질어질...🤣)
😒 그럼 state를 부모 컴포넌트에서 관리하지 말고 중앙 관리 통제구역을 만들어서 독립적으로 사용할 순 없나??
전역 스토어 설정 !
👌 가능하다
먼저 Root 가 최상위 부모 컴포넌트라고 가정해보자 Root 컴포넌트에서 G 컴포넌트 까지 데이터를 전달하려면
ROOT -> A -> E -> G 구조로 단방향으로 전달되는데 이 과정도 전달할 값이 많아지면 props driling이라는 문제가 발생한다.
위 그림을 보면 리덕스 스토어라는 중앙관리저장소를 하나 전역으로 만든다고 생각해보자!
그럼 부모로 데이터를 전달받지 않고 직접적으로 데이터를 사용할 수 있어 개발 생산성, 유지보수 대폭 상승!!?
Redux 폴더구조 (완전 초간단)
폴더구조도 간단하게 정의
1. store 정의
src-> store -> store.ts
import { configureStore } from "@reduxjs/toolkit";
import counterReducer from "../redux/slice/counterSlice"
export const store = configureStore({
reducer : {
counter: counterReducer,
}
})
// 스토어 state 타입 정의
export type RootState = ReturnType<typeof store.getState>
// dispatch 타입
export type AppDispatch = typeof store.dispatch