Web/์ƒํƒœ ๊ด€๋ฆฌ

Redux ๋ฐœ ๋‹ด๊ฐ€๋ณด๊ธฐ

 

๐Ÿ“’ Redux๋ž€?

React์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ๋ณ„๋„์˜ ์ €์žฅ์†Œ์—์„œ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

๐Ÿ“Œ useState์™€ Redux์˜ ์ฐจ์ด

๐Ÿ“ useState()์˜ ๊ฒฝ์šฐ

๋‹จ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ƒํƒœ๋ฅผ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌผ๋ก  ๋‹น์—ฐํžˆ props๋ฅผ ํ†ตํ•ด ์ƒํƒœ ๊ฐฑ์‹  ํ•จ์ˆ˜๋ฅผ ๋‚ด๋ ค์ฃผ๋ฉด ๋˜์ง€๋งŒ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋ผ๊ณ  ์•Œ๊ณ  ์žˆ๋‹ค.

 

๐Ÿ“ Redux์˜ ๊ฒฝ์šฐ

๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์—์„œ Redux Store์— ์ ‘๊ทผํ•˜์—ฌ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜, reducers๋ฅผ ํ†ตํ•ด ์ƒํƒœ๋ฅผ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๐Ÿ“Œ Redux Store์˜ ๊ตฌ์„ฑ ์š”์†Œ

  • `initialState`: ์ƒํƒœ์˜ ๊ธฐ๋ณธ๊ฐ’
  • `reducers`: ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ ์ฝ”๋“œ. reducers๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ์„œ๋Š” ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.
  • `action` : reducers๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ•จ์ˆ˜ (dispatch๋ผ๋Š” redux ๋‚ด๋ถ€์˜ ํ•จ์ˆ˜๋กœ ์‹คํ–‰ํ•œ๋‹ค.)

 

๐Ÿ“Œ Redux ๋ฅผ ์–ด๋–ค ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ?

์‚ฌ์šฉ๋œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ ๊ณ  ์ปดํฌ๋„ŒํŠธ ์‚ฌ์ด์— ์ƒํƒœ ์ „๋‹ฌ์ด ์ ๋‹ค๋ฉด ์˜ค๋ฒ„์ŠคํŽ™์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ์˜คํžˆ๋ ค ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๊ฒŒ ๋” ์ข‹์„ ์ˆ˜ ์žˆ๋‹ค.

๋‹จ, ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์— ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ๊ท€์ฐฎ์€ ๋‹จ๊ณ„๊นŒ์ง€ ๋˜์—ˆ๋‹ค๋ฉด ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค.

 

๐Ÿ“’ Redux-ToolKit (RTK) ๋ž€?

Redux ๊ณต์‹ ๊ฐœ๋ฐœ ํŒ€์—์„œ ๊ฐœ๋ฐœํ–ˆ๊ณ , Redux๋ฅผ ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.

๊ณต์‹ ๋ฌธ์„œ: https://redux-toolkit.js.org/

 

Redux Toolkit | Redux Toolkit

The official, opinionated, batteries-included toolset for efficient Redux development

redux-toolkit.js.org

 

๐Ÿ“’ ์˜ˆ์‹œ ์ฝ”๋“œ

import { nanoid, PayloadAction } from '@reduxjs/toolkit';
import { createSlice } from 'utils/@reduxjs/tookit';

const slice = createSlice({
  name: 'todo',
  initialState: [],
  reducers: {
    addTodo: {
      reducer: (state, action: PayloadAction<TodoItem>) => {
        state.todolist.push(action.payload);
      },
      prepare: (content: string) => {
        const id = nanoid();
        return { payload: { id, content, completed: false, editing: false } };
      },
    },
    checkTodo: (state, action: PayloadAction<{ id: string; }>) {
      const { id } = action.payload;
      const todo = state.todolist.find(todo => todo.id === id);
      if (todo) {
        todo.completed = !todo.completed;
      }
    },
  },
});

 

 

 

 

'Web > ์ƒํƒœ ๊ด€๋ฆฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ”„๋ก ํŠธ์—”๋“œ ์ƒํƒœ๊ด€๋ฆฌ  (0) 2022.02.10