728x90
컴포넌트 내에서 함수가 많아지고 길어지는 방법은 복잡해지기 때문에 올바른 방법이라고 할 수 없다.
useReducer은 컴포넌트의 상태변화 로직을 컴포넌트 밖으로 분리하여 사용할 수 있다.
reducer
const reducer = (state, action) => {
switch (action.type) {
case 1:
return state +1;
case 2:
return state +2;
case 3:
return state +3;
default:
return state;
}
);
형식
const reducer = (상태변화가 일어나기전 status, 어떤 상태변화를 일으킬 지의 action 객체) =>{
switch(action.type){
return 새로운 상태 값
}
}
dispatch
const Counter = () =>{
const [count, dispatch] = useReducer(reducer, 1);
return (
<div>
{count}
<button onClick={() => dispatch({ type: 1 })}>add 1 </button>
<button onClick={() => dispatch({ type: 2 })}>add 2 </button>
<button onClick={() => dispatch({ type: 3 })}>add 3 </button>
</div>
);
};
dispatch를 사용하면 reducer에게 action을 넘겨주게 된다.
형식
const [count, dispatch] = useReducer(상태변화함수, 초기값);
728x90
'Web > React' 카테고리의 다른 글
[React] 라우팅 방법 버전 6 및 유용한 기능 (0) | 2023.05.02 |
---|---|
[React] PropDrilling 해결을 위한 Context api 사용 방법 (0) | 2023.04.24 |
[React] Reac.memo 함수형 컴포넌트 업데이트 조건 적용방법 (0) | 2023.04.21 |
[React] useMemo 사용방법 (0) | 2023.04.21 |
[React] Lifecycle 생애주기 및 사용방법 (0) | 2023.04.21 |