Redux Toolkit - dltmdrbtjd/HANG GitHub Wiki
Redux-Toolkit
๋ชฉ์
- Redux ์ ์ฅ์ ๊ตฌ์ฑ์ด ๋๋ฌด ๋ณต์กํ๋ค.
- Redux์์ ์ ์ฉํ ์์ ์ ์ํํ๊ธฐ์ํด์๋ ๋ง์ ํจํค์ง๋ฅผ ์ถ๊ฐํด์ผํ๋ค.
- Redux์๋ ๋๋ฌด ๋ง์ ์ฌ์ฉ๊ตฌ ์ฝ๋๊ฐ ํ์ํ๋ค.
- ๋ชจ๋ ๋ฌธ์ ์ ๋ค์ ๋ชจ๋ ํด๊ฒฐํ ์๋ ์์ง๋ง ๊ธฐ์กด js๋ก ์์ ์์๋ redux-actions๋ฅผ ์ฌ์ฉํด์ ์์ ํ์์๋๋ฐ ๊ธฐ์กด๋ณด๋ค ์กฐ๊ธ ๋ ํธํด์ง ์ ๋์์ง ์์ ๋ฌธ์ ์ ๋ค์ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์์๋ค. ๊ทธ๋์ ts๋ก ๋ฆฌํฉํ ๋ง์ ์งํํ๋ฉด์ ๋ฆฌ๋์ค๋ฅผ ์ด๋ป๊ฒํด์ผ ์ข ๋ ๊น๋ํ๊ฒ ์ฌ์ฉํ ์ง ๊ณ ๋ฏผํ๋ค๊ฐ redux-toolkit์ ๋ฐ๊ฒฌํ๊ณ redux์ฝ๋๋ฅผ ๊ฐ์ ํ๋๋ฐ ๋ง์ ๋์์ด ๋์๋ค. ๊ทธ๋ฆฌ๊ณ ts์ ์ง์๋ ๊ต์ฅํ ์๋์ด์์ด์ ๋ฆฌํฉํ ๋ง๊ณผ์ ์์ ๊ต์ฅํ ์ ์ฉํ๋ค.
๊ฐ์ ํ์ ์ฝ๋
- ํ๋ฉด 2๊ฐ์ ๊ฑธ์ณ ๊ธธ๊ฒ ์์ฑ๋ ์ฝ๋๋ฅผ ๋ ๊น๋ํ๊ฒ ์ ๋ฆฌํ์๋ค.
์ค์น
npm install @reduxjs/toolkit
ํฌํจ๋ api
- configureStore(): createStore๋จ์ํ๋ ๊ตฌ์ฑ ์ต์ ๊ณผ ์ข์ ๊ธฐ๋ณธ๊ฐ์ ์ ๊ณตํ๊ธฐ ์ํด ๋ํ ํฉ๋๋ค. ์๋์ผ๋ก ์ฌ๋ผ์ด์ค ๋ฆฌ๋์๋ฅผ ๊ฒฐํฉํ๊ณ , ์ ๊ณตํ๋ ๋ชจ๋ Redux ๋ฏธ๋ค์จ์ด๋ฅผ ์ถ๊ฐ redux-thunkํ๊ณ , ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจ ํ๊ณ , Redux DevTools Extension์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- createReducer(): switch ๋ฌธ์ ์์ฑํ๋ ๋์ ๋์๋ฌธ์ ๊ฐ์ ํจ์์ ์์ ์ ํ์ ์กฐํ ํ ์ด๋ธ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋ํ immer๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฅผ ์๋์ผ๋ก ์ฌ์ฉํ์ฌ state.todos[3].completed = true.
- createAction(): ์ฃผ์ด์ง ์ก์ ์ ํ ๋ฌธ์์ด์ ๋ํ ์ก์ ์์ฑ์ ํจ์๋ฅผ ์์ฑํฉ๋๋ค. ํจ์ ์์ฒด๊ฐ toString()์ ์๋์ด ์์ผ๋ฏ๋ก ํ์ ์์ ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- createSlice(): ๋ฆฌ๋์ ํจ์์ ๊ฐ์ฒด, ์ฌ๋ผ์ด์ค ์ด๋ฆ, ์ด๊ธฐ ์ํ ๊ฐ์ ๋ฐ์ ํด๋น ์ก์ ์์ฑ์์ ์ก์ ์ ํ์ ๊ฐ์ง ์ฌ๋ผ์ด์ค ๋ฆฌ๋์๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
- createAsyncThunk: ์์ ์ ํ ๋ฌธ์์ด๊ณผ ์ฝ์์ ๋ฐํํ๋ ํจ์๋ฅผ ์๋ฝํ๊ณ pending/fulfilled/rejectedํด๋น ์ฝ์์ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ ํ ์ ์ ๋ฌํ๋ ์ฝํฌ๋ฅผ ์์ฑํฉ๋๋ค.
- createEntityAdapter: ์คํ ์ด์์ ์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ๋์ ๋ฐ ์ ๋ ํฐ ์ธํธ๋ฅผ ์์ฑํฉ๋๋ค.
- createSelector์ ํธ๋ฆฌํฐ ๋ก๋ถํฐ ์ฌ ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋, ์ฌ์ฉ์ ์ฉ์ด์ฑ์ ์ํด ์ฌ์์ถ.
store
- ๋ฆฌํฉํ ๋ง๊ณผ์ ์์ reudx-toolkit์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค๋ก ์คํ ์ด๋ฅผ ๋ค์ ์์ฑํ์๋ค.
- useSelector๋ก ์ปดํฌ๋ํธ์์ state๋ฅผ ๊ฐ์ ธ์ฌ๋ ํญ์ ํ์ ์ค์ ์ ํด์ค์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์ด์ store์ ์ปค์คํ ์ผ๋ก type๋ ์ถ๊ฐ๋ selector๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉํ์๋ค.
์ถ์ฒ
์๋ฃ : https://redux-toolkit.js.org/