How To Integrate Bootstrap HTML Template in your Reactjs Application

In this article, we will learn how to integrate theme or HTML-bootstrap template in a React.js project.

Prerequisites

  • We should have the basic knowledge of React.js
  • Visual Studio Code IDE should be installed on your system.
  • Bootstrap

Let’s first download a Bootstrap template. You can download a free template from the following Link. I am going to use sb Admin Bootstrap template.

Create React.js Project

To create a new React.js project, open the command prompt and enter the following command.

npx create-react-app reacttemplatedemo 

Open the newly created project in Visual Studio Code and install Bootstrap in this project by using the following command.

npm install --save bootstrap 

Now, open the index.js file and add import Bootstrap.

import 'bootstrap/dist/css/bootstrap.min.css';  

Now copy css, js and img folder from the template

This is image title

Now, in Visual Studio code, go to the Public folder, create a new folder named ‘assets’ and inside this folder, add the css, js and img file that you copied from the bootstrap template.

This is image title

Now open index.html file and add reference of css and js. Add the following code in index.html.

<!DOCTYPE html>  
<html lang="en">  
  <head>  
    <meta charset="utf-8" />  
    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />  
    <meta name="viewport" content="width=device-width, initial-scale=1" />  
    <meta name="theme-color" content="#000000" />  
    <meta  
      name="description"  
      content="Web site created using create-react-app"  
    />  
    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />  
    <link href="./assets/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">  
    <link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">  
    <link href="./assets/css/sb-admin-2.min.css" rel="stylesheet">  
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />  
    <title>React App</title>  
  </head>  
  <body>  
    <noscript>You need to enable JavaScript to run this app.</noscript>  
    <div id="root"></div>  
    <script src="./assets//vendor/jquery/jquery.min.js"></script>  
    <script src="./assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>  
    <script src="./assets/vendor/jquery-easing/jquery.easing.min.js"></script>  
    <script src="./assets/js/sb-admin-2.min.js"></script>  
    <script src="./assets/vendor/chart.js/Chart.min.js"></script>  
    <script src="./assets/js/demo/chart-area-demo.js"></script>  
    <script src="./assets/js/demo/chart-pie-demo.js"></script>  
  </body>  
</html>   

Now, go to the src folder, create a new folder named 'Layout 'and inside this folder, add 4 new components,

  • Footer.js
  • Header.js
  • Layout.js
  • Leftside.js

Now open Header.js component and add the following code.

import React, { Component } from 'react'  
  
export class Header extends Component {  
    render() {  
        return (  
            <div>  
                <nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow">  
  
         
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">  
  <i class="fa fa-bars"></i>  
</button>  
  
  
<form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">  
  <div class="input-group">  
    <input type="text" class="form-control bg-light border-0 small" placeholder="Search for..." aria-label="Search" aria-describedby="basic-addon2"/>  
    <div class="input-group-append">  
      <button class="btn btn-primary" type="button">  
        <i class="fas fa-search fa-sm"></i>  
      </button>  
    </div>  
  </div>  
</form>  
  
  
<ul class="navbar-nav ml-auto">  
  
  
  <li class="nav-item dropdown no-arrow d-sm-none">  
    <a class="nav-link dropdown-toggle" href="#" id="searchDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">  
      <i class="fas fa-search fa-fw"></i>  
    </a>  
   
    <div class="dropdown-menu dropdown-menu-right p-3 shadow animated--grow-in" aria-labelledby="searchDropdown">  
      <form class="form-inline mr-auto w-100 navbar-search">  
        <div class="input-group">  
          <input type="text" class="form-control bg-light border-0 small" placeholder="Search for..." aria-label="Search" aria-describedby="basic-addon2"/>  
          <div class="input-group-append">  
            <button class="btn btn-primary" type="button">  
              <i class="fas fa-search fa-sm"></i>  
            </button>  
          </div>  
        </div>  
      </form>  
    </div>  
  </li>  
  
   
  <li class="nav-item dropdown no-arrow mx-1">  
    <a class="nav-link dropdown-toggle" href="#" id="alertsDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">  
      <i class="fas fa-bell fa-fw"></i>  
      <span class="badge badge-danger badge-counter">3+</span>  
    </a>  
  
    <div class="dropdown-list dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="alertsDropdown">  
      <h6 class="dropdown-header">  
        Alerts Center  
      </h6>  
      <a class="dropdown-item d-flex align-items-center" href="#">  
        <div class="mr-3">  
          <div class="icon-circle bg-primary">  
            <i class="fas fa-file-alt text-white"></i>  
          </div>  
        </div>  
        <div>  
          <div class="small text-gray-500">December 12, 2019</div>  
          <span class="font-weight-bold">A new monthly report is ready to download!</span>  
        </div>  
      </a>  
      <a class="dropdown-item d-flex align-items-center" href="#">  
        <div class="mr-3">  
          <div class="icon-circle bg-success">  
            <i class="fas fa-donate text-white"></i>  
          </div>  
        </div>  
        <div>  
          <div class="small text-gray-500">December 7, 2019</div>  
          $290.29 has been deposited into your account!  
        </div>  
      </a>  
      <a class="dropdown-item d-flex align-items-center" href="#">  
        <div class="mr-3">  
          <div class="icon-circle bg-warning">  
            <i class="fas fa-exclamation-triangle text-white"></i>  
          </div>  
        </div>  
        <div>  
          <div class="small text-gray-500">December 2, 2019</div>  
          Spending Alert: We've noticed unusually high spending for your account.  
        </div>  
      </a>  
      <a class="dropdown-item text-center small text-gray-500" href="#">Show All Alerts</a>  
    </div>  
  </li>  
  
  
  <li class="nav-item dropdown no-arrow mx-1">  
    <a class="nav-link dropdown-toggle" href="#" id="messagesDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">  
      <i class="fas fa-envelope fa-fw"></i>  
    
      <span class="badge badge-danger badge-counter">7</span>  
    </a>  
  
    <div class="dropdown-list dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="messagesDropdown">  
      <h6 class="dropdown-header">  
        Message Center  
      </h6>  
      <a class="dropdown-item d-flex align-items-center" href="#">  
        <div class="dropdown-list-image mr-3">  
          <img class="rounded-circle" src="https://source.unsplash.com/fn_BT9fwg_E/60x60" alt=""/>  
          <div class="status-indicator bg-success"></div>  
        </div>  
        <div class="font-weight-bold">  
          <div class="text-truncate">Hi there! I am wondering if you can help me with a problem I've been having.</div>  
          <div class="small text-gray-500">Emily Fowler · 58m</div>  
        </div>  
      </a>  
      <a class="dropdown-item d-flex align-items-center" href="#">  
        <div class="dropdown-list-image mr-3">  
          <img class="rounded-circle" src="https://source.unsplash.com/AU4VPcFN4LE/60x60" alt=""/>  
          <div class="status-indicator"></div>  
        </div>  
        <div>  
          <div class="text-truncate">I have the photos that you ordered last month, how would you like them sent to you?</div>  
          <div class="small text-gray-500">Jae Chun · 1d</div>  
        </div>  
      </a>  
      <a class="dropdown-item d-flex align-items-center" href="#">  
        <div class="dropdown-list-image mr-3">  
          <img class="rounded-circle" src="https://source.unsplash.com/CS2uCrpNzJY/60x60" alt=""/>  
          <div class="status-indicator bg-warning"></div>  
        </div>  
        <div>  
          <div class="text-truncate">Last month's report looks great, I am very happy with the progress so far, keep up the good work!</div>  
          <div class="small text-gray-500">Morgan Alvarez · 2d</div>  
        </div>  
      </a>  
      <a class="dropdown-item d-flex align-items-center" href="#">  
        <div class="dropdown-list-image mr-3">  
          <img class="rounded-circle" src="https://source.unsplash.com/Mv9hjnEUHR4/60x60" alt=""/>  
          <div class="status-indicator bg-success"></div>  
        </div>  
        <div>  
          <div class="text-truncate">Am I a good boy? The reason I ask is because someone told me that people say this to all dogs, even if they aren't good...</div>  
          <div class="small text-gray-500">Chicken the Dog · 2w</div>  
        </div>  
      </a>  
      <a class="dropdown-item text-center small text-gray-500" href="#">Read More Messages</a>  
    </div>  
  </li>  
  
  <div class="topbar-divider d-none d-sm-block"></div>  
  
  
  <li class="nav-item dropdown no-arrow">  
    <a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">  
      <span class="mr-2 d-none d-lg-inline text-gray-600 small">Valerie Luna</span>  
      <img class="img-profile rounded-circle" src="https://source.unsplash.com/QAB-WJcbgJk/60x60"/>  
    </a>  
  
    <div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="userDropdown">  
      <a class="dropdown-item" href="#">  
        <i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>  
        Profile  
      </a>  
      <a class="dropdown-item" href="#">  
        <i class="fas fa-cogs fa-sm fa-fw mr-2 text-gray-400"></i>  
        Settings  
      </a>  
      <a class="dropdown-item" href="#">  
        <i class="fas fa-list fa-sm fa-fw mr-2 text-gray-400"></i>  
        Activity Log  
      </a>  
      <div class="dropdown-divider"></div>  
      <a class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal">  
        <i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>  
        Logout  
      </a>  
    </div>  
  </li>  
  
</ul>  
  
</nav>  
            </div>  
        )  
    }  
}  
  
export default Header  

Now open Leftside.js component and add the following code.

import React, { Component } from 'react'  
import { Link } from 'react-router-dom';  
export class Leftside extends Component {  
    render() {  
        return (  
            <div>  
                <ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion" id="accordionSidebar">  
                    <a class="sidebar-brand d-flex align-items-center justify-content-center" href="index.html">  
                        <div class="sidebar-brand-text mx-3">React Routing </div>  
                    </a>  
  
                    <hr class="sidebar-divider my-0" />  
  
                    <li class="nav-item active">  
                        <a class="nav-link" href="index.html">  
                            <i class="fas fa-fw fa-tachometer-alt"></i>  
                            <span>Dashboard</span></a>  
                    </li>  
                    <hr class="sidebar-divider" />  
                    <div class="sidebar-heading">  
                        Interface  
                    </div>  
                    <li class="nav-item">  
                        <a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="true" aria-controls="collapseTwo">  
                            <i class="fas fa-fw fa-cog"></i>  
                            <span>Components</span>  
                        </a>  
                        <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar">  
                            <div class="bg-white py-2 collapse-inner rounded">  
                                <h6 class="collapse-header">Custom Components:</h6>  
                                <Link class="collapse-item" to="/home">Buttons</Link>  
                                <Link class="collapse-item" to="/button">Chart</Link>  
                            </div>  
                        </div>  
                    </li>  
                    <li class="nav-item">  
                        <a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseUtilities" aria-expanded="true" aria-controls="collapseUtilities">  
                            <i class="fas fa-fw fa-wrench"></i>  
                            <span>Utilities</span>  
                        </a>  
                        <div id="collapseUtilities" class="collapse" aria-labelledby="headingUtilities" data-parent="#accordionSidebar">  
                            <div class="bg-white py-2 collapse-inner rounded">  
                                <h6 class="collapse-header">Custom Utilities:</h6>  
                                <a class="collapse-item" href="utilities-color.html">Colors</a>  
                                <a class="collapse-item" href="utilities-border.html">Borders</a>  
                                <a class="collapse-item" href="utilities-animation.html">Animations</a>  
                                <a class="collapse-item" href="utilities-other.html">Other</a>  
                            </div>  
                        </div>  
                    </li>  
                    <hr class="sidebar-divider" />  
  
                    <div class="sidebar-heading">  
                        Addons  
</div>  
                    <li class="nav-item">  
                        <a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapsePages" aria-expanded="true" aria-controls="collapsePages">  
                            <i class="fas fa-fw fa-folder"></i>  
                            <span>Pages</span>  
                        </a>  
                        <div id="collapsePages" class="collapse" aria-labelledby="headingPages" data-parent="#accordionSidebar">  
                            <div class="bg-white py-2 collapse-inner rounded">  
                                <h6 class="collapse-header">Login Screens:</h6>  
                                <a class="collapse-item" href="login.html">Login</a>  
                                <a class="collapse-item" href="register.html">Register</a>  
                                <a class="collapse-item" href="forgot-password.html">Forgot Password</a>  
                                <div class="collapse-divider"></div>  
                                <h6 class="collapse-header">Other Pages:</h6>  
                                <a class="collapse-item" href="404.html">404 Page</a>  
                                <a class="collapse-item" href="blank.html">Blank Page</a>  
                            </div>  
                        </div>  
                    </li>  
                    <li class="nav-item">  
                        <Link class="nav-link" to="/color"> <i class="fas fa-fw fa-chart-area"></i>Colors</Link>  
                        {/* <a class="nav-link" href="charts.html"> 
                            <i class="fas fa-fw fa-chart-area"></i> 
                            <span>Charts</span></a> */}  
                    </li>  
                    <li class="nav-item">  
                        <Link class="nav-link" to="/table">  <i class="fas fa-fw fa-table"></i>Tables</Link>  
                        {/* <a class="nav-link" href="tables.html"> 
                            <i class="fas fa-fw fa-table"></i> 
                            <span>Tables</span></a> */}  
                    </li>  
                    <hr class="sidebar-divider d-none d-md-block" />  
                    <div class="text-center d-none d-md-inline">  
                        <button class="rounded-circle border-0" id="sidebarToggle"></button>  
                    </div>  
  
                </ul>  
            </div>  
        )  
    }  
}  
  
export default Leftside  

Now open the Footer.js component and add the following code.

import React, { Component } from 'react'  
  
export class Footer extends Component {  
    render() {  
        return (  
            <div>  
                 <footer class="sticky-footer bg-white">  
        <div class="container my-auto">  
          <div class="copyright text-center my-auto">  
            <span>Copyright © Your Website 2019</span>  
          </div>  
        </div>  
      </footer>  
            </div>  
        )  
    }  
}  
  
export default Footer  

Now open Layout.js component and  import Header, Footer and Leftside component, add the following code in this component.

import React, { Component, Suspense } from 'react';  
import Leftside from './Leftside';  
import Header from './Header'  
import Footer from './Footer'  
import Home from '../Home'  
import {  
    Route, Switch, Redirect  
} from 'react-router-dom';  
export class Layout extends Component {  
    loading = () => <div className="animated fadeIn pt-1 text-center">Loading...</div>  
    render() {  
        return (  
            <div>  
                <div id="wrapper">  
                    <Leftside></Leftside>  
                    <div id="content-wrapper" class="d-flex flex-column">  
                        <div id="content">  
                            <Header />  
                            <Home/>  
                        </div>  
                        <Footer />  
                    </div>  
                </div>  
            </div>  
        )  
    }  
}  
  
export default Layout  

Now open app.js file and following code

import React from 'react';  
import logo from './logo.svg';  
import './App.css';  
import Layout  from './Layout/Layout'  
import Login from "./Login";  
import { HashRouter, Route, Switch } from 'react-router-dom';  
function App() {  
  return (  
     <div className="App">  
      <Layout/>   
     </div>  
  );  
}  
  
export default App; 

Now run the project by using ‘npm start’ and check the result.

This is image title

Summary

In this article, we learned how to integrate theme or HTML-bootstrap template in a React.js project.

Now run the project by using ‘npm start’ and check the result.

This is image title

Thank you for reading!

#reactjs #bootstrap #html

How To Integrate Bootstrap HTML Template in your Reactjs Application
107.70 GEEK