Skip to content

Instantly share code, notes, and snippets.

@trevorblades
Created August 9, 2019 04:05
Show Gist options
  • Select an option

  • Save trevorblades/52de9ee6663aaeb58ef50a801f56a472 to your computer and use it in GitHub Desktop.

Select an option

Save trevorblades/52de9ee6663aaeb58ef50a801f56a472 to your computer and use it in GitHub Desktop.
import React, {Component} from 'react';
import styles from './Navbar.module.css';
import {Link, NavLink} from 'react-router-dom';
function isLoggedIn() {
const cookies = document.cookie
.split(';')
.filter(item => item.trim().startsWith('logedIn='));
return cookies.length > 0;
}
class Navbar extends Component {
constructor() {
super();
this.state = {
loggedIn: isLoggedIn()
};
}
componentDidMount() {
this.interval = window.setInterval(() => {
this.setState({loggedIn: isLoggedIn()});
}, 500);
}
componentWillUnmount() {
clearInterval(this.interval);
}
render() {
return (
<header>
<nav
className={` ${styles.navbar} navbar navbar-dark bg-dark navbar-expand-lg`}
>
<div className="container">
<Link className="navbar-brand mr-5" to="/">
I <i className={`${styles.red} fas fa-heart fa-xs`}></i> Jokes
</Link>
<button
className="navbar-toggler"
type="button"
data-toggle="collapse"
data-target="#navbarContent"
aria-controls="navbarContent"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span className="navbar-toggler-icon"></span>
</button>
<div className="collapse navbar-collapse" id="navbarContent">
<ul className="navbar-nav mr-auto">
<li className="nav-item ">
<NavLink className="nav-link" exact to="/">
Home
</NavLink>
</li>
<li className="nav-item">
<NavLink className="nav-link" to="/about">
About
</NavLink>
</li>
</ul>
<ul className="navbar-nav">
{this.state.loggedIn ? (
<React.Fragment>
<NavLink className="nav-link mr-3" to="/account">
My account
</NavLink>
<NavLink className="nav-link" to="/logout">
Log out
</NavLink>
</React.Fragment>
) : (
<React.Fragment>
<NavLink className="nav-link mr-3 " to="/login">
Log in
</NavLink>
<NavLink className="nav-link" to="/signup">
Sign up
</NavLink>
</React.Fragment>
)}
</ul>
</div>
</div>
</nav>
</header>
);
}
}
export default Navbar;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment