Blog>
Snippets

Adapting Custom Middleware to Redux v5.0.0

Showcase the necessary adjustments for custom middleware to be compatible with Redux v5.0.0 middleware changes.
const customMiddleware = storeAPI => next => action => {
  // Middleware logic here
  
  // Before dispatching to the next middleware or reducer
  console.log('Dispatching:', action);
  let result = next(action);
  
  // After the action has been dispatched
  console.log('Next state:', storeAPI.getState());
  
  return result;
};
This is an example of a custom middleware adapted for Redux v5.0.0. It uses the curried function pattern with storeAPI, next, and action arguments. It logs the action before it's dispatched and the state after the action has been dispatched. It's compatible with the new Redux Middleware API.
// Import createStore and applyMiddleware from Redux
import { createStore, applyMiddleware } from 'redux';

// This is a dummy reducer for demonstration
function rootReducer(state = {}, action) {
  // Reducer logic here
  return state;
}

// Apply the customMiddleware to the Redux store
const store = createStore(
  rootReducer,
  applyMiddleware(customMiddleware)
);
This piece of code imports the necessary functions from Redux to create a store and applies the custom middleware to the Redux store using applyMiddleware.
<!DOCTYPE html>
<html lang='en'>
<head>
  <meta charset='UTF-8'>
  <meta name='viewport' content='width=device-width, initial-scale=1.0'>
  <title>Redux Middleware Example</title>
  <script src='https://cdnjs.cloudflare.com/ajax/libs/redux/5.0.0/redux.min.js'></script>
  <script>
    // Insert JavaScript code here
  </script>
</head>
<body>
  <h1>Check the console for middleware output</h1>
</body>
</html>
This is the HTML boilerplate that includes Redux 5.0.0 via CDN. You can insert the JavaScript code from the previous JSON code blocks in the script tag to set up the Redux store with a custom middleware. This template provides a basic HTML structure to test the middleware in a live environment (using the browser console).
body {
  font-family: Arial, sans-serif;
}
h1 {
  color: #333;
  text-align: center;
}
This is the CSS that styles the HTML document. It sets the font family for the body and styles the h1 element with a color and centers the text. These styles are just for demonstration and can be enhanced or modified according to the desired look and feel.