react ์คํฐ๋์์ ๋ฆฌ์กํธ๋ฅผ ๋ค๋ฃจ๋ ๊ธฐ์ ์ด๋ผ๋ ์ฑ ์ ์ ์ ํ๊ณ ์ด ์ฑ ์ ์ฝ๊ณ ๋ฐฐ์ด ๊ฒ์ ๋ฐํ์ผ๋ก ์์ฑ๋์๋ค.
useState
๋ณด๋ค ๋ ๋ค์ํ ์ปดํฌ๋ํธ ์ํฉ์ ๋ฐ๋ผ ๋ค์ํ ์ํ๋ฅผ ์
๋ฐ์ดํธํด์ฃผ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.๐ก useReducer
๋ฅผ ์ฌ์ฉํ์ ๋์ ํฐ ์ฅ์ ์ ์ปดํฌ๋ํธ ์
๋ฐ์ดํธ ๋ก์ง์ ์ปดํฌ๋ํธ ๋ฐ๊นฅ์ผ๋ก ๋นผ๋ผ ์ ์๋ค.
state
)์ ์
๋ฐ์ดํธ๋ฅผ ์ํด ํ์ํ ์ ๋ณด๋ฅผ ๋ด์ action
๊ฐ์ ์ ๋ฌ๋ฐ์ ์๋ก์ด ์ํ๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค.action
์ ์ด๋ค ๊ฐ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.function reducer(state, action){
return {};
}
useReducer
์ ์ฒซ๋ฒ์งธ ์ธ์์๋ reducer
ํจ์๋ฅผ ๋ฃ๊ณ , ๋๋ฒ์งธ ์ธ์์๋ ์ด๊ธฐ ์ํ๊ฐ์ ๋ฃ๋๋ค.useReducer
๋ฅผ ํธ์ถํ๊ณ ๋น๊ตฌ์กฐํ ํ ๋น์ ํตํด state
์ dispatch
๋ฅผ ์ถ์ถํ๋ค.state
๋ ํ์ฌ ์ํ๊ฐ์ด๊ณ , dispatch
๋ action
๊ฐ์ ์ธ์๋ก ๋ฐ์ reducer
ํจ์๋ฅผ ํธ์ถํ๋ ํจ์์ด๋ค. (dispatch(action
)// Counter
import { useReducer } from 'react';
function reducer(state, action){
switch(action.type){
case "INCREMENT":
return { value: state.value + 1};
case "DECREMENT":
return { value: state.value - 1};
default:
return state;
}
}
const Counter = () => {
const [state, dispatch] = useReducer(reducer, { value: 0 });
return (
<div>
<h1>number : {state.value}</h1>
<button onClick={() => dispatch({type: "INCREMENT"})}>+1</button>
<button onClick={() => dispatch({type: "DECREMENT"})}>-1</button>
</div>
);
}