In React.js, I have page link menus and 3 toggle buttons in header.js
.
All toggles buttons have div
layer when clicked.
What I am trying to make is...
- When click a toggle button, other toggle buttons and layer has to be removed class
active
- When click page link menu(menu1, menu2, menu3), all toggle buttons and layers has to be removed class
active
What do I need to change the code ?
This is what I tried so far now.
Please help.
DEMO : https://codesandbox.io/s/49io4
header.js
import React, { useState, useEffect } from "react";
import { NavLink } from "react-router-dom";
export default function Header() {
const [show, setShow] = useState(false);
const [show2, setShow2] = useState(false);
const [show3, setShow3] = useState(false);
useEffect(() => {
if (show) {
document.body.classList.add("bodyRemoveScroll");
} else {
document.body.classList.remove("bodyRemoveScroll");
}
}, [show]);
const onToggleClick = () => setShow(!show);
const onToggleClick2 = () => setShow2(!show2);
const onToggleClick3 = () => setShow3(!show3);
return (
<div className="header">
{/* <NavLink to="/">Home</NavLink> */}
/<NavLink to="/menu1">menu1</NavLink>/
<NavLink to="/menu2">menu2</NavLink>/<NavLink to="/menu3">menu3</NavLink>/
<button onClick={onToggleClick} className={show ? "active" : ""}>
toggle1
</button>
<nav className={`layer1 ${show ? "active" : ""}`}>layer 1</nav>/
<button onClick={onToggleClick2} className={show2 ? "active" : ""}>
toggle2
</button>
<nav className={`layer2 ${show2 ? "active" : ""}`}>layer 2</nav>/
<button onClick={onToggleClick3} className={show3 ? "active" : ""}>
toggle3
</button>
<nav className={`layer3 ${show3 ? "active" : ""}`}>layer 3</nav>
</div>
);
}