Blog>
Snippets

Logging Actions with Middleware

Create a logging middleware to record every action dispatched to the store, as well as the state before and after the dispatch in Redux 5.0.0.
const loggerMiddleware = store => next => action => {
  console.log('dispatching', action);
  let previousState = store.getState();
  console.log('previous state', previousState);
  let result = next(action);
  let nextState = store.getState();
  console.log('next state', nextState);
  return result;
};

// Add the loggerMiddleware to Redux when creating the store
// import { createStore, applyMiddleware } from 'redux';
// const store = createStore(reducer, applyMiddleware(loggerMiddleware));
This piece of JavaScript code defines a logging middleware for Redux. The middleware logs the action being dispatched, the previous state before the action is dispatched, and the next state after the action has been processed. This middleware should be used with Redux's `applyMiddleware` function during store creation.
<!DOCTYPE html>
<html lang='en'>
<head>
  <meta charset='UTF-8'>
  <title>Redux Logging Middleware</title>
</head>
<body>
  <script src='https://cdnjs.cloudflare.com/ajax/libs/redux/5.0.0/redux.min.js'></script>
  <script src='path/to/your/middleware.js'></script>
  <script src='path/to/your/store.js'></script>
  <!-- The rest of your application scripts -->
</body>
</html>
This HTML file includes the necessary Redux CDN link for version 5.0.0 and references to your middleware and store JavaScript files. This represents the boilerplate to include the Redux script and the created logging middleware in a website.
body {
  font-family: Arial, sans-serif;
  margin: 0;
  padding: 20px;
  background-color: #f4f4f4;
}

/* Additional styling can go here */
This CSS provides basic styling for the body element of your webpage, setting the font, margins, padding, and background color. This keeps the page visually clean and readable. It can be extended with additional styling relevant to the rest of your web application.