Blog>
Snippets

Adding extra reducers to slices

Demonstrate how to inject additional reducers into a slice to handle external actions not originally contemplated by the slice.
import { createSlice } from '@reduxjs/toolkit';

// Define a slice
const exampleSlice = createSlice({
  name: 'example',
  initialState: {},
  reducers: {},
  // Extra reducers can be added here
  extraReducers: (builder) => {
    builder.addCase('externalAction', (state, action) => {
      // Handle the external action
    });
  }
});

export default exampleSlice.reducer;
This is a basic example of how to create a slice using Redux Toolkit's createSlice method. An extra reducer is added to the slice to handle an action type named 'externalAction' that is not originally part of the slice's reducers.
import { createAction } from '@reduxjs/toolkit';

// Define an external action
export const externalAction = createAction('externalAction');
This piece of code creates an external action using Redux Toolkit's createAction function. This action can be dispatched from anywhere in the application and will be handled by the extra reducer added to the exampleSlice.
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Redux Extra Reducers Example</title>
</head>
<body>
  <div id="app"></div>
  <!-- Link to your compiled JavaScript containing the Redux logic here -->
  <script src="path_to_your_compiled_redux_bundle.js"></script>
</body>
</html>
This is a basic HTML structure that includes an HTML document with a script tag to include the compiled JavaScript code where you defined your Redux logic including the slices with extra reducers.
body {
  font-family: Arial, sans-serif;
}

/* Add additional CSS if necessary to style your application */
A basic CSS snippet to set Arial as the default font family for the body element of the webpage. You may add additional CSS styles as needed to style your application.