공식문서 보고 정리해보깅~
https://ko.reactjs.org/docs/hooks-reference.html#usereducer
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 |