<div id="root">
</div>
const { useState, useReducer } = React


const ACTION_TYPER = {
  deposit: "deposit",
  withdraw: "withdraw"
}


const reducer = (state, action) => {
  switch(action.type) {
    case ACTION_TYPER.deposit:
      return state + action.payload;
    case ACTION_TYPER.withdrae:
      return state - action.payload;
    default:
      return state
  }
  
  return state + action.payload
}

function App() {
  const [number, setNumber] = useState(0)
  const [money, dispatch] = useReducer(reducer, 0)
  
  return (
    <div>
      <h2>곽튜브 은행에 오신것을 환영합니다.</h2>
      <p>잔고 : {money}원</p>
      <input type="number" value={number} onChange={(e) => setNumber(parseInt(e.target.value))} step="1000"/>
      <button onClick={() => {dispatch({type: ACTION_TYPER.deposit, payload: number })}}>예금</button>
      <button onClick={() => {dispatch({type: ACTION_TYPER.withdrae, payload: number })}}>출금</button>
    </div>
  )
}

ReactDOM.render(<App />,
document.getElementById("root"))
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/react/18.2.0/umd/react.production.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.2.0/umd/react-dom.production.min.js