지난 편에 redux에 대해 공부했다. 아래는 그 포스트.
13일차 react-redux - 생활코딩! React 리액트 프로그래밍
이번 편은 전역 상태 관리(Global State Management) 모듈의 최고봉인 redux에 대한 내용이 담겨 있었다. 그런데, 내용에 물음표가 조금 붙더라. 교재의 골자는 prop drilling의 문제와 그 해법으로 전역 상태
swjman.tistory.com
이 번 편은 redux조차도 불편해서 만든 redux toolkit(RTK)이라는 모듈에 대한 교육이다.
위 포스트의 순수 redux 코드를 RTK로 바꿔서 코딩해 보았다.
import React from 'react'; import { Provider, useDispatch, useSelector } from 'react-redux'; import { configureStore, createSlice } from '@reduxjs/toolkit'; const css = ` div { border-radius: 3px; border: 3px solid gray; margin: 10px; padding: 10px; } `; const colorSlice = createSlice({ name: 'color', initialState: 'black', reducers: { black: () => 'black', green: () => 'green' } }); const store = configureStore({reducer:{color:colorSlice.reducer}}); function Top1() { return ( <div> <h3>Top1</h3> <Top2 /> </div> ); } function Top2() { return ( <div> <h3>Top2</h3> <Top3 /> </div> ); } function Top3() { const color = useSelector(state => state.color); const dispatch = useDispatch(); return ( <div> <h3 style={{ color }} onClick={() => dispatch({type: color === 'black' ? 'color/green' : 'color/black'})}> Top3 </h3> </div> ); } function Bottom1() { return ( <div> <h3>Bottom1</h3> <Bottom2 /> </div> ); } function Bottom2() { return ( <div> <h3>Bottom2</h3> <Bottom3 /> </div> ); } function Bottom3() { const color = useSelector(state => state.color); const dispatch = useDispatch(); return ( <div> <h3 style={{ color }} onClick={() => { dispatch({type: color === 'black' ? 'color/green' : 'color/black'})}}> Bottom3 </h3> </div> ); } function App() { return ( <Provider store={store}> <style>{css}</style> <Top1 /> <Bottom1 /> </Provider> ); } export default App;
셋업 부분과 이용하는 부분에 조금 변화가 있다. 뭔가 좀 더 정돈되어 보인다. 무엇보다 순수 redux와 RTK의 차이는 slice의 유무이다. RTK는 redux store를 slice라는 단위로 쪼개고 각 slice의 접근성(scope)을 제어할 수 있다. 매우 유용할 것 같은데, 순수 redux는 이 기능을 사용자가 직접 설계/구현해줘야 한다. 이 때문에 처음부터 RTK를 이용해야 한단다.
사족...
기존에 관리했던 프로젝트는 트렌디하게 zustand를 이용했는데, redux를 공부해보니 redux를 그냥 써도 무방했을 것 같다.
'Book Study > 생활코딩! React 리액트 프로그래밍' 카테고리의 다른 글
15일차 Next.js - 생활코딩! React 리액트 프로그래밍 (終) (0) | 2025.04.02 |
---|---|
13일차 react-redux - 생활코딩! React 리액트 프로그래밍 (1) | 2025.03.31 |
12일차 useReducer - 생활코딩! React 리액트 프로그래밍 (0) | 2025.03.28 |
11일차 Context API - 생활코딩! React 리액트 프로그래밍 (0) | 2025.03.27 |
10일차 스타일드 컴포넌트 - 생활코딩! React 리액트 프로그래밍 (0) | 2025.03.24 |