useReducer
useReducer
์ฌ์ฉ๋ฒ #1
import React, { useReducer, useState } from 'react';
// reducer - state๋ฅผ ์
๋ฐ์ดํธ ํ๋ ์ญํ (์ํ)
// dispatch - state ์
๋ฐ์ดํธ๋ฅผ ์ํ ์๊ตฌ
// action - ์๊ตฌ์ ๋ด์ฉ
const ACTION_TYPES = {
deposit: 'deposit',
withdraw: 'withdraw',
};
const reducer = (state, action) => {
console.log('reducer is working', state, action);
switch (action.type) {
case ACTION_TYPES.deposit:
return state + action.payload;
case ACTION_TYPES.withdraw:
return state - action.payload;
default:
return state;
}
};
function App() {
const [number, setNumber] = useState(0);
const [money, dispatch] = useReducer(reducer, 0);
return (
<div>
<h2>useReducer ์ํ์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค</h2>
<p>์๊ณ : {money}์</p>
<input
type="number"
value={number}
onChange={(e) => setNumber(parseInt(e.target.value))}
step="1000"
/>
<button
onClick={() => {
dispatch({ type: ACTION_TYPES.deposit, payload: number });
}}
>
์๊ธ
</button>
<button
onClick={() => {
dispatch({ type: ACTION_TYPES.withdraw, payload: number });
}}
>
์ถ๊ธ
</button>
</div>
);
}
export default App;์ฌ์ฉ๋ฒ #2
useReducer.jsx
Student.jsx
Last updated