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

const reducer = (state, action) => {
  switch(action.type) {
    case "INSC":
      return {...state, data: ++state.data}
    case "DESC":
      return {...state, data: --state.data}
    default:
      return state
  }
}

const initState = {
  data: 0
}

function TestReducer(props) {
    const [state, dispatch] = useReducer(reducer, initState)
    
    const add = () => {
      dispatch({type: "INSC"})
    }
    
    const substract = () => {
      dispatch({type: "DESC"})
    }
    
    return (
      <div>
        <div>{state.data}</div>
        <button onClick={add}>+1</button>
        <button onClick={substract}>-1</button>
      </div>
    )
}

ReactDOM.render(<TestReducer />, 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/16.12.0/umd/react.production.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.11.0/umd/react-dom.production.min.js