dukDukz

[React] useReducer 본문

웹 개발/React

[React] useReducer

헤일리_HJ 2022. 1. 27. 16:05
import React, { useReducer, useState } from "react";

const ACTIONS = {
  INCREMENT: "increament",
  DECREMENT: "decreament"
};

function reducer(state, action) {
  switch (action.type) {
    case ACTIONS.INCREMENT:
      return {
        count: state.count + 1
      };

    case ACTIONS.DECREMENT:
      return {
        count: state.count - 1
      };

    default:
      return state;
  }
}

export default function App() {
  const [state, dispatch] = useReducer(reducer, { count: 0 });

  function increament() {
    dispatch({ type: "increament" });
  }

  function decreament() {
    dispatch({ type: "decreamnet" });
  }

  return (
    <>
      <button onClick={decreament}> - </button>
      <span>{state.count}</span>
      <button onClick={increament}> + </button>
    </>
  );
}

 

 

함수를 여러개 만들필요없이 type으로만 나눠서 reducer 함수 하나로 state  관리가 가능해진다.

 

영상에서는 Todo list 를 수정 삭제 하는 예를 들었는데 이때는 해당 배열의 id값을 인자값으로 보내줘서 수정 삭제 기능을 구현하면 된다.

 

 

 

https://www.youtube.com/watch?v=kK_Wqx3RnHk 

보는 걸 추천한다.