dukDukz
[React] useReducer 본문
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
보는 걸 추천한다.
'웹 개발 > React' 카테고리의 다른 글
[Error] Manifest: Line: 1, column: 1, Syntax error. (0) | 2022.02.11 |
---|---|
React -redux 복습 -> counter (0) | 2022.02.07 |
[React] useCallback - 함수 재사용하기 (0) | 2022.01.27 |
[React] useMemo - 자원을 효율적으로 memorized (0) | 2022.01.26 |
[React] useEffect - 마운트 / 언마운트, clean up (0) | 2022.01.26 |