공식문서 보고 정리해보깅~ 
https://ko.reactjs.org/docs/hooks-reference.html#usereducer
Hooks API Reference – React
A JavaScript library for building user interfaces
ko.reactjs.org
1. useReducer란?
- useState의 대체 함수이다.
 - 다수의 하위값을 포함해 복잡한 정적로직을 만들때
 - 다음 state가 이전 state에 의존적인 경우에 선호한다.
 
2. 싫어요 버튼을 만들어보자
  //초기값 설정
  const initialHate = { count: 0 };
  
  // const [state,dispatch] = useReducer(reducer,initialState);
  const [hate, hateDispatch] = useReducer(hateReducer, initialHate);
  
  
  // reducer로 action을 감지하고 상태값을 변경해준다. 
    function hateReducer(hate, action) {
    switch (action.type) {
      case "plus":
        return { count: hate.count + 1 };
      case "minus":
        return { count: hate.count - 1 };
      default:
        throw new Error();
    }
  }
  
  
  // button에서 직접 값을 변경하지 않는다.
  // button클릭시 dispatch로 action의 타입만 전달해준다.
        <Button
            sx={{ width: 50, height: 30 }}
            variant="contained"
            onClick={() => hateDispatch({ type: "minus" })}
          >
            -
          </Button>
  
  
          <Button
            sx={{ width: 50, height: 30 }}
            variant="contained"
            onClick={() => hateDispatch({ type: "plus" })}
          >
           +
          </Button>
1. useReducer를 이용해 초기화한다.
2. hateReducer의
 첫번째 인자에  hateReducer,
 두번째인자에 초기값을 넣어준다.
3. hateReducer는 Action의 type을 감지해서 hate값을 변경해준다.
4. hateDispatch로 Action의 type을 넘겨준다.

Redux의 로직과 비슷하당
 
'Frontend > React' 카테고리의 다른 글
| React-hook-form 을 알아봅시닷 (0) | 2023.02.15 | 
|---|---|
| MUI를 알아보자 :) | Button | Layout 수정완. (0) | 2023.02.13 | 
| useInterval()을 알아보자 (0) | 2023.02.03 | 
| React에서 setInterval() 과 useInterval()무엇을 써야할까 (1) | 2023.02.02 | 
| React-query : isLoading vs isFetching 를 비교해보자 (2) | 2023.01.31 |