ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

ํ•„์ˆ˜ ๊ณผ์ œ๋ฅผ ๋งˆ์น˜๊ณ  ๋„์ „ ๊ณผ์ œ์ธ RTK๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

 

Context API๋ฅผ ์‚ฌ์šฉํ•œ ๋กœ์ง์—์„œ RTK๋กœ ๋ฐ”๊พธ๋ ค๋‹ˆ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„์ด ๋งŽ์•˜๋‹ค.

ํฌ๊ฒŒ RTK๋ฅผ ์„ธํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์„ธํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•! 

 


 

RTK (Redux Toolkit) ๋ž€?

๋ฆฌ๋•์Šค ํˆดํ‚ท์€ ๋ฆฌ๋•์Šค๋ฅผ ๊ฐœ๋Ÿ‰ํ•œ ๊ฒƒ

๋ฆฌ๋•์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ–ˆ๋˜ ducks ํŒจํ„ด์˜ ์š”์†Œ๋“ค์ด ์ „์ฒด์ ์ธ ์ฝ”๋“œ์˜ ์–‘์„ ๋Š˜๋ฆฐ๋‹ค๋Š” ๊ฐœ๋ฐœ์ž๋“ค์˜ ๋ถˆ๋งŒ์ด ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ ,
๋ฆฌ๋•์Šค ํŒ€์—์„œ๋Š” ์ด๊ฒƒ์„ ์ˆ˜์šฉํ•˜์—ฌ ์ฝ”๋“œ๋Š” ๋” ์ ๊ฒŒ, ๊ทธ๋ฆฌ๊ณ  ๋ฆฌ๋•์Šค๋ฅผ ๋” ํŽธํ•˜๊ฒŒ ์“ฐ๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ํก์ˆ˜ํ•ด์„œ ๋งŒ๋“  ๊ฒƒ์ด ๋ฆฌ๋•์Šคํˆดํ‚ท

๋ฆฌ๋•์Šค ํˆดํ‚ท์€ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์› ๋˜ ๋ฆฌ๋•์Šค์™€ ๊ตฌ์กฐ๋‚˜ ํŒจ๋Ÿฌ๋‹ค์ž„์ด ๋ชจ๋‘ ๋˜‘๊ฐ™๋‹ค.

์ฆ‰ ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. 
๋ฆฌ๋•์Šค์˜ ์ „์ฒด ์ฝ”๋“œ์˜ ์–‘์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด API๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๊ณ  ์ผ์ผํžˆ ์†์œผ๋กœ ๋งŒ๋“ค์–ด ์ค˜์•ผ ํ–ˆ๋˜ ducks ํŒจํ„ด์˜ ์š”์†Œ๋“ค์ด ์–ด๋А์ •๋„ ์ž๋™ํ™” ๋˜์—ˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ์—์„œ useSelector๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋‘ ๋˜‘๊ฐ™๋‹ค.
๋ฐ”๋€ ๋ถ€๋ถ„์€ ๊ทธ์ € ๋ชจ๋“ˆ ํŒŒ์ผ
๋ฟ์ด๋‹ค.

 

 

 

RTK Setting

์ „์ฒด์ ์ธ ์ˆœ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

1. ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฐ ํŒŒ์ผ ๊ตฌ์„ฑ
2. ์Šคํ† ์–ด ์ƒ์„ฑ (configureStore()
3. Slice ์ƒ์„ฑ (createSlice() / reducer์™€ actions ์ •์˜)
4. ์ •์˜ํ•œ reducer๋ฅผ store์— ์ž…๋ ฅํ•˜์—ฌ store ๊ตฌ์„ฑ
5. <Provider>๋กœ ๊ฐ์‹ธ๊ธฐ, store ์ฃผ์ž…

 

๐Ÿ“1. ํŒจํ‚ค์ง€ ์„ค์น˜ ๋ฐ ํŒŒ์ผ ๊ตฌ์„ฑ

  • ๋ฆฌ๋•์Šค ํˆดํ‚ท ์„ค์น˜ : yarn add @redux.js/toolkit
  • RTK๋Š” moudules๋ฅผ ์ž˜ ์•ˆ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์—
    redux ํด๋” > silces ํด๋” > ~Slices.js

 

 

๐Ÿ“2. ์Šคํ† ์–ด ์ƒ์„ฑ (configureStore() ์‚ฌ์šฉ)

  • configureStore์€ ๊ฐ์ฒด ํ˜•ํƒœ์˜ ์ธ์ž๋ฅผ 1๊ฐœ ๊ฐ–๋Š”๋‹ค.
  • ์ธ์ž์—๋Š” ์ถ”ํ›„ slice์—์„œ ์ƒ์„ฑํ•œ reducer๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.
// ๊ฐ์ฒด ํ˜•ํƒœ์˜ ์ธ์ž 1๊ฐœ
export const store = configureStore({ ์ธ์ž });

 

 

 

๐Ÿ“3. Slice ์ƒ์„ฑ (createSlice() / reducer์™€ actions ์ •์˜)

  • initalState ์ดˆ๊ธฐ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ
// ๋ณดํ†ต ๋กœ์ง
const initialState = {
	name: ""
};

// ๋‚ด๊ฐ€ ๊ตฌ์„ฑํ•œ ๋กœ์ง
const initialState = [];
  • createSlice() ์‚ฌ์šฉ
// ๋ณ€์ˆ˜๋Š” action (type, value, creator), reducer๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ๋‹ค.
const *๋ณ€์ˆ˜๋ช… = createSlice({ ๋‚ด๋ถ€ ๊ฐ์ฒด })

// ๋‚ด๋ถ€ ๊ฐ์ฒด
{	name: "์ด๋ฆ„",
    initialState,
    reducers: {
    	ํ•จ์ˆ˜๋ช…1: (state, action) => {๋ฆฌ๋“€์„œ ๋‚ด์—์„œ ์‹ค์ œ ์ž‘๋™์‹œํ‚ฌ ๋กœ์ง};
        ํ•จ์ˆ˜๋ช…2: () => {};
    };
};
  • action creator
    • ํ•จ์ˆ˜๋ช…1, ํ•จ์ˆ˜๋ช…2 ๊ฐ€ ๊ณง action creator
    • action creator๋ฅผ ์‹คํ–‰ํ•˜๋ฉด action ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค.
    • *๋ณ€์ˆ˜๋ช…์˜ actions์—์„œ ํ•จ์ˆ˜๋ฅผ ๋ฝ‘์•„์„œ ๋‚ด๋ณด๋‚ด๊ธฐ
export const { ํ•จ์ˆ˜๋ช…1, ํ•จ์ˆ˜๋ช…2 } = *๋ณ€์ˆ˜๋ช….actions;
  • reducer
    • ์ด์ „์— ์ƒ์„ฑํ•œ store์˜ ์ธ์ž๋กœ ๋“ค์–ด๊ฐ
export default counterSlice.reducer;

 

 

๐Ÿ“4. ์ •์˜ํ•œ reducer๋ฅผ store์— ์ž…๋ ฅํ•˜์—ฌ store ๊ตฌ์„ฑ

  • store์˜ ์ธ์ž ์ž๋ฆฌ์— reducer๋ฅผ ์ฃผ์ž…
const store = configureStore ({   ๐Ÿ‘‰๐Ÿป๋‚ด๋ถ€์— ๊ฐ์ฒด
	reducer : {		  ๐Ÿ‘‰๐Ÿปkey ๋‚ด์— ๊ฐ์ฒด(reducer๋“ค)	
    	counter: counterSlice,    ๐Ÿ‘‰๐Ÿปimport ์‹œ ํŒŒ์ผ๋ช… ํ™•์ธ!
        };
});

 

 

๐Ÿ“5. <Provider>๋กœ ๊ฐ์‹ธ๊ธฐ, store ์ฃผ์ž…

  • APP.jsx (์ตœ์ƒ์œ„ ํŒŒ์ผ)์—์„œ <Provider>๋กœ ๊ฐ์‹ธ๊ธฐ
  • ๋งŒ๋“  store ์ฃผ์ž…ํ•˜๊ธฐ
// APP.jsx
const App = () => {
  return (
    <Provider store={store}>
      <Router />
    </Provider>
  );
};

 

 


RTK ์„ธํŒ…์„ ์œ„ํ•œ ๋‹จ๊ณ„๋ฅผ ์ •๋ฆฌํ–ˆ๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ๋Š” ์‹ค์ œ ์ ์šฉํ•œ ๋ฐฉ๋ฒ•์„ ๋ฐ”ํƒ•์œผ๋กœ RTK ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•˜๊ฒ ๋‹ค.

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2026/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ