Create Folder Structure in ReactJs - salimakhtar92/ReactJs GitHub Wiki

Create JSON file like mock-data.jsons

{
  "name": "root",
  "items": [
    {
      "name": "src",
      "items": [
        {
          "name": "components",

          "items": [
            {
              "name": "login",
              "items": [
                {
                  "name": "login.js"
                },
                {
                  "name": "login.css"
                }
              ]
            },
            {
              "name": "list",
              "items": [
                {
                  "name": "list.js"
                },
                {
                  "name": "list.css"
                }
              ]
            }
          ]
        },
        {
          "name": "containers"
        },
        {
          "name": "services"
        }
      ]
    },
    {
      "name": "public",
      "items": [
        {
          "name": "index.html"
        }
      ]
    }
  ]
}

Create folder.js file

import React, { useState } from "react";

export default function Folder({ mockData }) {
  console.log(mockData);
  const [expand, setExpand] = useState(false);
  if (mockData.items) {
    return (
      <div className="App">
        <h4 onClick={() => setExpand(!expand)}>{mockData.name}</h4>
        <div
          style={{ display: expand ? "block" : "none", paddingLeft: "20px" }}
        >
          {mockData.items &&
            mockData.items.map((item) => <Folder mockData={item} />)}
        </div>
      </div>
    );
  } else {
    return <h4>{mockData.name}</h4>;
  }
}

Now in index.js file import Folder and JSON file

import { StrictMode } from "react";
import ReactDOM from "react-dom";
import mockData from "./mock-data.json";
import Folder from "./folder";

const rootElement = document.getElementById("root");
ReactDOM.render(
  <StrictMode>
    <Folder mockData={mockData} />
  </StrictMode>,
  rootElement
);

Output:

root
  src
     components
        login
           login.js
           login.css
        list
           list.js
           list.css
     containers
     services
  public
      index.html
⚠️ **GitHub.com Fallback** ⚠️