<div class="container">
  <button type="button" class="plus-num">+ </button>
  <h1 class="result">0</h1>
  <button type="button" class="minus-num">- </button>
</div>
:root {
  background-color: #282c34;
}
.container {
  height: 95vh;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 5rem;
}
.result {
  color: #61dafb;
  font-size: 5rem;
}

button {
  font-size: 3rem;
  border-radius: 1rem;
  border-style: none;
  cursor: pointer;
  padding: 0 2rem;
}
const el = document.querySelector(".result");
const plusNumBTN = document.querySelector(".plus-num");
const minusNumBTN = document.querySelector(".minus-num");
console.clear();

const { createStore } = Redux;

const initialState = {
  counter: 0
};

const counterReducer = (state = initialState, action) => {
  switch (action.type) {
    case "plus":
      return {
        ...state,
        counter: state.counter + action.payload
      };
    case "minus":
      return {
        ...state,
        counter: state.counter - 5
      };
    default:
      return state;
  }
};

const counterSubscriber = () => {
  const latestState = store.getState();
  console.log(latestState);
  el.innerHTML = latestState.counter;
};

const store = createStore(counterReducer);

store.subscribe(counterSubscriber);

plusNumBTN.addEventListener(
  "click",
  () => store.dispatch({ type: "plus", payload: 5 }),
  false
);
minusNumBTN.addEventListener(
  "click",
  () => store.dispatch({ type: "minus" }),
  false
);

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/redux/4.1.0/redux.min.js