#2 PURE REDUX: TO DO LIST

#2.0 Vanilla ToDo

Vanilla JS > To Do ๋ฆฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑ, ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ

Reduxํ™”

state ์„ค์ •, ๊ฐ„๋‹จํ•œ reducer ์ž‘์„ฑ(์ž‘๋™X), dispatcher์— ์—ฐ๊ฒฐ๊นŒ์ง€ ํ™•์ธ

  • ์ฝ”๋“œ

    import { createStore } from "redux";
    
    const form = document.querySelector("form");
    const input = document.querySelector("input");
    const ul = document.querySelector("ul");
    
    const ADD_TODO = "ADD_TODO";
    const DELETE_TODO = "DELETE_TODO";
    
    const reducer = (state = [], action) => {
      switch (action.type) {
        case ADD_TODO:
          return [];
    
        case DELETE_TODO:
          return [];
    
        default:
          return state;
      }
    };
    
    const store = createStore(reducer);
    
    const onSubmit = (e) => {
      e.preventDefault();
      const toDo = input.value;
      input.value = "";
      store.dispatch({ type: ADD_TODO, text: toDo });
    };
    
    form.addEventListener("submit", onSubmit);

#2.1 State Mutation

ADD ๋ฒ„ํŠผ ํด๋ฆญ์‹œ state ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ˆ˜์ • > mutate๊ฐ€ ์•„๋‹Œ New state๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ

state๋Š” single source of truth ์ด๊ณ , read-only ์ด๊ธฐ์— ์ ˆ๋Œ€ mutateํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •ํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ์ƒˆ๋กœ์šด Object๋ฅผ ๋ฆฌํ„ดํ•ด์•ผํ•จ

  • ์ฝ”๋“œ


#2.2 Delete To Do

ADD ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ๋ฆฌ์ŠคํŠธ ์ถ”๊ฐ€ & DEL ๋ฒ„ํŠผ ์ถ”๊ฐ€๋œ ์ƒํƒœ

์•„์ง DEL ๊ตฌํ˜„์ด ์•ˆ๋˜์„œ ์ „์ฒด๊ฐ€ ์‚ญ์ œ๋จ

  • ์ฝ”๋“œ


#2.3 Delete To Do part Two

state๋ฅผ filter๋กœ ์ •๋ฆฌํ•ด Delete ๊ตฌํ˜„

Do NOT Mutate ! return NEW STATE !!

  • ์™„์„ฑ ์ฝ”๋“œ


#2.4 Conclusions

  1. fuction์„ ์‚ฌ์šฉํ•ด redux ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•œ๋‹ค. action์„ dispatchํ•˜๋Š” fn reducer์— ๋ณด๋‚ผ object๋ฅผ returnํ•˜๋Š” fn +a

  2. Do Not Mutate !! Return New State !!! ์ฝ”๋“œ์Šคํ…Œ์ด์ธ ์—์„œ ํ•™์Šตํ•œ ๋‚ด์šฉ๊ณผ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋ฅผ ๋ณด์ด๋Š” ๊ตฌ๊ฐ„์ด๋‹ค. ๊ฐ•์˜ ๋‚ด๋‚ด ์ด ๋ถ€๋ถ„์„ ๊ฐ•์กฐํ•˜๋ฉฐ ๊ธฐ์กด์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ž„์„ ๊ฐ์ธ์‹œ์ผฐ๋‹ค.


Last updated

Was this helpful?