useState와 같이 상태를 관리해주는 react hook
useReducer를 사용하면 상태 업데이트 로직을 기존 컴포넌트로부터 분리시킬 수 있다. 컴포넌트 바깥에 작성할 수 도 있고 다른 파일에 작성한 후 불러올 수 도 있다.
const [state, dispatch] = useReducer(reducer, initialState,(optional)init);
import React, {useState,useReducer } from 'react';
function numberReducer(state,action){
if(action.type==='UP'){
return state+1;
}
else if(action.type==='DOWN'){
return state-1;
}
}
function Counter() {
const [number, numberDispatch] =useReducer(numberReducer,0);
//const [number,setNumber] =useState(0);
function up() {
//setNumber(prevNumber => prevNumber + 1);
numberDispatch({type:"UP"});
};
function down() {
//setNumber(prevNumber => prevNumber - 1);
numberDispatch({type:"DOWN"});
};
return (
<div>
<h1>{number}</h1>
<button onClick={up}>+1</button>
<button onClick={down}>-1</button>
</div>
);
}
export default Counter;