๐ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ (Seperation of Concerns)
: ํน์ ํ ๊ด์ฌ์ฌ์ ๋ฐ๋ผ ๊ธฐ๋ฅ์ ๊ตฌ๋ถํ์ฌ, ๊ฐ ๊ธฐ๋ฅ๋ค๋ง๋ค ๊ฐ๊ฐ์ ๊ด์ฌ์ฌ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฝ๋๋ฅผ ์์ฑํ๋ ํจํด์ด๋ค.
ํจ์๋ฅผ ์ต๋ํ ๊ฐ๊ฒฐํ ํํ๋ก ๊ตฌํํ์ฌ, ํ๋ก์ธ์ค์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๊ณ , ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ฉฐ, ์ ์ง๋ณด์๋ฅผ ์ํ ํ๊ฒ ํฉ๋๋ค.
๋ฆฌ๋์ค๋ ์ด "๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ"๋ฅผ ํตํด ํด๋ ๊ตฌ์กฐ๋ฅผ ๋๋์ด ๋ณผ ์ ์๋๋ฐ,
ํฌ๊ฒ ๋๋ ์ ์๋ ํํธ๊ฐ "๋ฆฌ๋์(reducer)"์ "์ก์ (action)" ์ด๋ค.
์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ์ ์ ๊ด๋ จ๋ ๊ธฐ๋ฅ๋ค์ user.js ์ ๋ค ๋ฃ์ด๋๊ณ ์ฌ์ฉ, ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฒ์๊ธ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ๋ค์ boards.js์์ ๊ด๋ฆฌํ๋ค.
๋ฆฌ๋์ ๊ฐ์ ๊ฒฝ์ฐ๋, ์์ํจ์๋ก ์ ์๊ฐ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ฆฌํ๊ธฐ ๊ต์ฅํ ํธ๋ฆฌํ๋ค.
const init = {
id: 1,
user_name: 'Tom',
is_logged_in: false,
is_admin: false,
}
export const userReducer = (prevState, action)=> {
switch(action.type){
case 'IS_LOGGED':
return ({
...prevState,
is_logged_in: true,
})
default: return prevState;
}
โ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๋ ์์ ๋ฆฌ๋์๋ค ํฉ์น๊ธฐ : combineReducers
const {combineReducers} = require('redux')
const userReducer = require('./user');
const boardReducer = require('./board');
module.exports = combineReducers({
user: userReducer,
boards: boardReducer
})
'Frontend > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
pnpm cache clean (0) | 2023.03.02 |
---|---|
Typescript - useRef() ์ฌ์ฉ์ type ์ค์ (0) | 2022.12.13 |
[React] + [Typescript + Emotion]์์ props ๋๊ธฐ๋ ๋ฐฉ๋ฒ (0) | 2022.09.10 |
[Redux]๋ฏธ๋ค์จ์ด(middleware) (0) | 2022.08.14 |
[Redux] ๋ฆฌ๋์ค ์๋ฆฌ ์ดํดํ๊ธฐ (0) | 2022.08.13 |