redux-toolkit-dynamic-import

1.0.2 • Public • Published

redux-toolkit-dynamic-import

Bindings for Redux Toolkit and React/Next JS

Step by Step article on dynamic import (https://medium.com/@ajinkyabhise012/automation-in-redux-toolkit-1cd8aff7ed46)

🚀 Installation 🚀

Installation: yarn i redux-toolkit-dynamic-import or npm i redux-toolkit-dynamic-import

If you want to use dynamic import,you have also installed: npm install @reduxjs/toolkit react-redux axios

👩‍🎓 Why 👩‍🎓

why use redux-toolkit-dynamic-import:

Automatic Reducer Discovery: Saves manual configuration and maintenance effort. Seamless Redux Toolkit Integration: Leverages the familiar APIs and conventions of Redux Toolkit. Enhanced Developer Experience: Offers a more streamlined and enjoyable development process.

Benefits:

Benefits of Using redux-toolkit-dynamic-import:

Improved Performance: By loading reducers only when needed, initial page load times and overall application responsiveness can be significantly boosted. Reduced Bundle Size: By avoiding including unused reducers in the initial bundle, your application's overall size is reduced, leading to faster downloads and better performance on slower networks. Better Code Organization: Separate reducer files promote modularity and maintainability, making your Redux codebase easier to manage and reason about. Enhanced Developer Experience: The automatic reducer discovery and lazy loading mechanism save you time and effort, streamlining the Redux setup process.

👟 Overview & getting started 👟

The following are steps to connect the store and application from the (FrontEnd & BackEnd) as shown below:

Step 1 :

install this cmd: npm i redux-toolkit-dynamic-import & install this cmd: npm install @reduxjs/toolkit react-redux axios

Step 2 :

create a file dyimport.js and add this code :

dyimport.js (shortened):

const yourPackage = require('dynamic-import-redux-toolkit');

const moduleNames = []; add here all model names in lowercase eg : ['product','order','bill']

yourPackage.generateStoreFiles(moduleNames);

step 3 :

go into the package.json file and add this code :

"config-toolkit": "node dyimport.js"

example code :

"scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    "config-toolkit": "node dyimport.js"
  }

step 4 : The next step is to run this cmd for dynamically importing store and models API:

open the terminal and run :

npm run config-toolkit

step 5 :

Integrate the store with front-end using the Provider from react-redux

In Next Js :

Inside the app/layout.js or pages/_app.js folder

"use client";
import "./globals.css";
import { Provider } from 'react-redux';
import store from '../store';

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>
        <Provider store={store}>
          {children}
        </Provider></body>
    </html>
  );
}

In React Js :

Inside the src/index.js

import React from "react"
import ReactDOM from "react-dom"
import App from "./App"
import { BrowserRouter } from "react-router-dom"
import { Provider } from "react-redux"
import store from "./store"

const app = (
  <Provider store={store}>
    <BrowserRouter>
      <App />
    </BrowserRouter>
  </Provider>
)

ReactDOM.render(app, document.getElementById("root"))

step 6 : Add the backend application endpoint to the HTTP server file

httpServer.js

update the URL here httpServer.js is located in the store folder on root location

// Initialize Axios instance with a URL
    const http = axios.create({
      baseURL: 'http://example.com', // Replace with your actual base URL
    });

FINALLY RUN YOU PROJECT AND ENJOY THE DYNAMIC CREATION OF REDUX TOOLKIT STORE.

npm run dev

for how to integrate api from pages please visit my blogs (https://medium.com/@ajinkyabhise012/automation-in-redux-toolkit-1cd8aff7ed46)

Readme

Keywords

Package Sidebar

Install

npm i redux-toolkit-dynamic-import

Weekly Downloads

1

Version

1.0.2

License

ISC

Unpacked Size

14.1 kB

Total Files

8

Last publish

Collaborators

  • ajinkyabhise