DEV Community

Hemant Govekar
Hemant Govekar

Posted on

5 2

Reactjs video #3: Navigation Header using scss and react-router-dom

The below code base is a supporting article for my youtube reactjs series.
Playlist Link

Video Link

Git Link

My plan for creating the entire video series is listed at the end of this article.

Creating Header Navigation

Alt Text

App.js

import React from 'react';
import {BrowserRouter as Router, Switch, Route, Link} from 'react-router-dom';
import Home from './components/Home';
import Users from './components/Users/Users';

import './App.css';
import Header from './components/Header/Header';
import Contact from './components/Contacts/Contact';
import About from './components/About/About';

const App = () => {
  return (
    <Router>
      <Header></Header>
      <Switch>
        <Route path="/home" component={Home} />
        <Route path="/users" component={Users} />
        <Route path="/contact" component={Contact} />
        <Route path="/about" component={About} />
      </Switch>
    </Router>
  );
};

export default App;
Enter fullscreen mode Exit fullscreen mode

App.scss

body {
  margin: 0px;
  padding: 0px;
}

.header-wrapper {
  display: flex;
  justify-content: space-between;
  position: relative;
  padding: 2rem;
  font-size: 15px;
  background-color: #3f3d56;
  border: 1px solid #ccc;
  box-sizing: 0 2px 2px rgba(black, 0.2);
  flex-direction: row;
  text-align: center;
  align-items: center;
  color: #fff;

  .logo {
    .brand {
      color: #fff;
      text-decoration: none;
    }
  }

  .nav-wrapper {
    .navigation,
    .navigation a,
    .navigation a:hover,
    .navigation a:focus {
      color: #fff;
      padding: 5px 10px;
      text-decoration: none;
    }
  }
}

.activeClass {
  border-bottom: 1px solid red;
}
Enter fullscreen mode Exit fullscreen mode

Header.js

import React from 'react';
import {NavLink} from 'react-router-dom';

const Header = () => {
  return (
    <nav className="header-wrapper">
      <div className="logo">
        <NavLink to="/" className="brand">
          Hemant's Website
        </NavLink>
      </div>
      <div className="nav-wrapper">
        <div className="navigation">
          <NavLink to="/about" activeClassName="activeClass">
            About
          </NavLink>
          <NavLink to="/contact" activeClassName="activeClass">
            Contact
          </NavLink>
          <NavLink to="/users" activeClassName="activeClass">
            Users
          </NavLink>
        </div>
      </div>
    </nav>
  );
};

export default Header;
Enter fullscreen mode Exit fullscreen mode

babel.config.json

{
  "presets": ["@babel/preset-env", "@babel/preset-react"],
  "env": {
    "test": {
      "plugins": ["@babel/plugin-transform-modules-commonjs"]
    }
  },
  "plugins": ["@babel/plugin-proposal-object-rest-spread"]
}
Enter fullscreen mode Exit fullscreen mode

webpack.config.json

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve('dist'),
    filename: 'main.js',
  },
  module: {
    rules: [
      {test: /\.js?$/, loader: 'babel-loader', exclude: /node_modules/},
      {test: /\.css$/i, use: ['style-loader', 'css-loader']},
      {
        test: /\.svg$/i,
        use: [{loader: 'file-loader', options: {esModule: false}}],
      },
    ],
  },
};

Enter fullscreen mode Exit fullscreen mode

I am planning to create a video tutorial series for ReactJs. Would you be interested ?? Please comment and let me know.

Following would be the plan

  • Create a basic app with webpack babel. (Done) Link
  • Add routing and get a simple react page ready.(Done) Link
  • Adding Sass for css.(Done) Link
  • UseFetch Hooks
  • Call jsonplaceholder API in the application.
  • Input form Validations in react application.
  • Firebase application for CRUD.
  • Tomcat deployment for ReactJs.
  • Advance Topics....

PlayList

Subscribe my channel to watch the videos

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

While many AI coding tools operate as simple command-response systems, Qodo Gen 1.0 represents the next generation: autonomous, multi-step problem-solving agents that work alongside you.

Read full post →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more