Redux 사용 방법
Redux 를 사용하는 이유 )
: props 드릴링을 방지하기 위하여 사용! Redux 를 사용하면 props 를 사용하지 않고도 State 공유가 가능하다!
redux 를 사용하지 않고 props 를 넘기는 경우 props 가 필요한 하위 컴포넌트까지 최초 선언된 컴포넌트 부터 하위의 하위 컴포넌트까지 이어 받아 전달해야하기 때문에 props 의 복잡도가 증가하며 유지보수가 힘들어진다.
또한 최하위 컴포넌트에서 props 의 State 를 변경하게 되면 해당 State 를 하위로 전달하기 위해 props 로 받아온 컴포넌트까지 불필요한 재렌더링 문제가 발생한다.
function App() {
const [user, setUser] = useState("Alice");
console.log("🔄 App 렌더링");
return <Parent user={user} setUser={setUser} />;
}
function Parent({ user, setUser }) {
console.log("🔄 Parent 렌더링");
return <Child user={user} setUser={setUser} />;
}
function Child({ user, setUser }) {
console.log("🔄 Child 렌더링");
return <GrandChild user={user} setUser={setUser} />;
}
function GrandChild({ user, setUser }) {
console.log("🔄 GrandChild 렌더링");
return (
<div>
<h1>Hello, {user}!</h1>
<button onClick={() => setUser("Bob")}>Change User</button>
</div>
);
}
redux 를 사용하지 않은 경우
GrandChild 컴포넌트에서 전달받은 user props 가 변경될 시 모든 컴포넌트에서 렌더링 콘솔이 출력된다.
1. Redux 설치
1. Redux 는 React 버전 18.1.0 이상부터 제대로 사용할 수 있으므로 package.json 에서 react 와 react-dom 버전을 확인한다.
![](https://blog.kakaocdn.net/dn/dFpWzA/btsL3m4whn5/OrUVFKXe3fk9e1FAnBl7J1/img.png)
2. Redux 설치
npm install @reduxjs/toolkit@1.8.1 react-redux
터미널을 켜서 프로젝트 디렉토리로 접속한 뒤 위 명령어를 입력하여 redux 를 설치
2. Redux 세팅 및 Redux State 사용 방법
1. Store.js 작성
![](https://blog.kakaocdn.net/dn/dj4bCI/btsL4WpJGLa/IiJEQQPvqTjTQcNtKANrI1/img.png)
![](https://blog.kakaocdn.net/dn/bqtWaD/btsL24bX46P/ky9rS3kEEcT5igUTdn2k9K/img.png)
2. Provider 와 생성한 store 를 index.js 에서 import 하여 전체 컴포넌트를 Provider 컴포넌트로 감싸준 뒤 store 를 설정
![](https://blog.kakaocdn.net/dn/bd1UK3/btsL4YHR0Hb/HJFk3o6mCHI91UZaq9uM1k/img.png)
3. store.js 에 선언하고 싶은 State 를 생성한 뒤 reducer 에 등록 ( Redux 에 State 선언 )
![](https://blog.kakaocdn.net/dn/rrEXT/btsL3houpG3/kiwkLNTjcGB0F1NBWakmZK/img.png)
4. 해당 State 를 필요한 곳에서 불러와서 사용하기
![](https://blog.kakaocdn.net/dn/3rVKq/btsL5kcQWuL/wCpAnIxHKiTZlYZ94kwdf0/img.png)
![](https://blog.kakaocdn.net/dn/du8peH/btsL3hhNW60/c9EBI2RNxkRPfnssjFHMKk/img.png)
5. 여러 State 를 사용하는 경우
![](https://blog.kakaocdn.net/dn/bcc1ak/btsL4IrReLi/vSm7maA9ODZPaDQKKBdzUk/img.png)
![](https://blog.kakaocdn.net/dn/xp6cE/btsL3lYT2KW/YH56vcP8hPmhNQbIt88dFK/img.png)
![](https://blog.kakaocdn.net/dn/biF4NY/btsL4Qb78gm/Akg7AsLydykiRAatSkwXs1/img.png)
3. Redux State 변경 방법
1. 변경 함수를 store.js 에 선언한 뒤 export
![](https://blog.kakaocdn.net/dn/bcYurd/btsL3nvDoDb/eESv4QyfQRfDHHGNlRlz51/img.png)
2. 변경할 컴포넌트에서 useDispatch 함수를 사용하여 store.js 의 State 데이터의 변경을 요청하여 사용
![](https://blog.kakaocdn.net/dn/SZvSY/btsL4GARYaE/UTSC6HtE9mXe3dHCNDyh30/img.png)
3. State 변경 함수를 여러개 선언하여 사용하기
![](https://blog.kakaocdn.net/dn/cH8ct5/btsL5tgsT6p/yDNl9FbkqzKoyXTTjjugzK/img.png)
![](https://blog.kakaocdn.net/dn/xrqaV/btsL4w58Pcv/8WRNu7nfnOtIivrhNkIdN1/img.png)
Redux 를 사용할때 유의할 점
1. State 변경함수는 직접 호출하는 것이 아닌 useDispatch 를 사용해 호출하는 형태로 사용해야 한다.
2. State 를 변경할때 매개변수를 전달하여 사용하는 경우 매개변수를 꼭 payload 함수를 사용해 해당 매개변수의 값을 꺼내와서 사용해야 한다.
3. js 파일을 분리하여 State 를 여러 파일에 분리하여 사용할 수 있다.
'FE > React' 카테고리의 다른 글
[React] React Component (0) | 2024.07.19 |
---|---|
[React] useState (0) | 2024.07.19 |