[Redux] redux-toolkit
글 작성자: 망고좋아
반응형

🎯 redux-toolkit 활용
- redux에서 공식적으로 추천하는 helper 라이브러리
- 기존에 만들어야 하는 수많은 보일러 플레이트를 제거하고 유용한 라이브러리를 포함하여 redux 코드를 쉽게 작성하게 한다.
- redux-devtools, immerjs, redux-thunk, reselect 등의 라이브러리가 미리 포함되어 있다.
- redux - unopinionated
- redux-toolkit - opinionated(의견이 반영된)
📝 configureStore
const store = configureStore({ reducer: { posts: postsReducer, users: usersReducer } })
- redux의 createStore 함수를 래핑 한다.
- named parameter로 쉽게 store를 생성한다.
- reducer - 객체를 받아, combineReducers를 적용한다.
📝 createAction
const addPost = createAction('post/addPost') addPost({ title: 'post 1' }) /* { type: 'post/addPost', payload : { title : 'post 1' } } */
- Action creator라는 함수를 만드는 함수(고차원 함수)
- 만들어진 action creator에 데이터를 넘기면, payload 필드로 들어간다.
- 생성된 action creator는 toString() 메서드를 오버라이드 해 자신이 생성하는 액션의 타입 String을 리턴한다.
📝 createReducer
const postsReducer = createReducer(initState, builder => { builder.addCase(addPost, (state, action) => { state.posts.push(action.payload) }) })
- reducer를 만들어준다.
- builder의 addCase 메서드를 이용하여 action마다 state의 변경을 정의한다.
- immerjs를 내부적으로 사용하므로 mutable code를 이용해 간편하게 변경 코드를 작성할 수 있다.
- mutable code란 [1, 2, 3, 4].push(5)하면 [1, 2, 3, 4, 5]
📝 createSlice
const postsSlice = createSlice({ name : 'posts', initialState, reducers: { addPost(state, action) { state.posts.push(action.payload) } } }) const { addPost } = postsSlice.actions const reducer = postsSlice.reducer
- Slice는 Action creator, reducer 등 별도로 만들어야 하는 여러 Redux 구현체를 하나의 객체로 모은 것
- createSlice 함수를 이용하여 많은 보일러 플레이트를 없애고 쉽게 action creator, reducer를 만든다.
📝 redux-toolkit API - createSelector
const postsSelector = state => state.posts const userSelector = state => state.user const postsByUserIdSelector = createSelector( postsSelector, userSelector, (posts, user) => posts.filter(post => post.username === user.username ) )
- createSelector 함수를 이용해 state를 이용한 특정 데이터를 리턴하도록 한다.
- 내부적으로 데이터를 캐시 하며, 데이터가 변동이 없다면 캐시 된 데이터를 리턴한다.
반응형
'프로그래밍 > React' 카테고리의 다른 글
[React] 리액트로 SSR 구현하기 (0) | 2022.01.19 |
---|---|
[React] React 테스팅 (0) | 2022.01.17 |
[Redux] Redux의 구조 (0) | 2022.01.17 |
[Redux] 리덕스란? (0) | 2022.01.17 |
[React Redux] React Redux란? (0) | 2022.01.17 |
댓글
이 글 공유하기
다른 글
-
[React] 리액트로 SSR 구현하기
[React] 리액트로 SSR 구현하기
2022.01.19 -
[React] React 테스팅
[React] React 테스팅
2022.01.17 -
[Redux] Redux의 구조
[Redux] Redux의 구조
2022.01.17 -
[Redux] 리덕스란?
[Redux] 리덕스란?
2022.01.17
댓글을 사용할 수 없습니다.