Skip to content

Redux react library by Kuldeep

December 1, 2022 | 12:00 AM

Redux

Dependencies

npm install react-redux redux

Insert the following as below

index.js

  <StrictMode>
    <Provider store={store}>
      <App />
    </Provider>
  </StrictMode>

App.js

import "./styles.css";
import { useSelector, useDispatch } from "react-redux";
import { bindActionCreators } from "redux";
import { actionCreators } from "./state/index";
export default function App() {
  const state = useSelector((state) => state);
  const dispatch = useDispatch();
  const { depositMoney, withdrawMoney } = bindActionCreators(
    actionCreators,
    dispatch
  );

  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <p>{state.account}</p>
      <button onClick={() => depositMoney(1000)}>Deposit money</button>
      <button onClick={() => withdrawMoney(1000)}>Withdraw money</button>
    </div>
  );
}

state/index.js

export * as actionCreators from "./action-creators/index";

state/store.js

import { createStore, applyMiddleware } from "redux";
import reducers from "./reducers/index";
import thunk from "redux-thunk";
export const store = createStore(reducers, {}, applyMiddleware(thunk));

state/action-creators/index.js

export const depositMoney = (amount) => {
  return (dispatch) => {
    dispatch({
      type: "deposit",
      payload: amount
    });
  };
};

export const withdrawMoney = (amount) => {
  return (dispatch) => {
    dispatch({
      type: "withdraw",
      payload: amount
    });
  };
};

state/reducers/accountReducer.js

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

export default reducer;

state/reducers/index.js

import { combineReducers } from "redux";
import accountReducer from "./accountReducer";

const reducers = combineReducers({
  account: accountReducer
});

export default reducers;