Skip to main content

How to highlight only a specific div onclick in reactjs?

I am currently creating a sidebar, however I am struggling to highlight a specific div on click while keeping the other divs un-highlighted. Also, in its initial state, the first menu item should be highlighted already. Please help me out to get rid of this! Below is my code(jsx file)

I have tried using useState and vanilla JavaScript. In vanilla nothing is working and when I used useState it is creating multiple copies of a single div. I just want to highlight a div on click while the others remain as it is.

import React from "react";
import { useState } from "react";
import "../css/sidebar.css";
import loginuser from "../img/login-user.svg";
import logoutuser from "../img/login-lock.svg";

// let menuitems = document.getElementsByClassName('sidebarmenuitem');
// let prevActive = menuitems[0];
// for(const item of menuitems){
//     item.addEventListener('click', function setActive(event){});
// }
// function setActive(event) {
//     event.target.classList.add("sidebarmenuitemactive");
//     prevActive.classList.remove("sidebarmenuitemactive");
//     prevActive = event.target;
// }

export default function Sidebar() {
  //  const [appState, changeState] = useState({
  //     activeObject: null,
  //     objects: [{ id: 1 }],
  //   });
  //   function toggleActive(index) {
  //     changeState({ ...appState, activeObject: appState.objects[index] });
  //   }
    
  //   function toggleActiveStyles(index) {
  //     if (appState.objects[index] === appState.activeObject) {
  //       return "sidebarmenuitem sidebarmenuitemactive";
  //     } else {
  //       return "sidebarmenuitem";
  //     }
  return (
    <div className="sidebarmenu">
      <p className="menu-name">MENU</p>
      <div className="sidebarmeunitem">
         <img src={loginuser} alt="Pict-CodeLab" className="img" />
         <p className="opt-name">LABS</p>
       </div>
      <div className="sidebarmenuitem">
        <img src={loginuser} alt="Pict-CodeLab" className="img" />
        <p className="opt-name">Assignments</p>
      </div>
      <div
        className="sidebarmenuitem"
        onClick={(e) => e.target.classList.toggle("sidebarmenuitemactive")}
      >
        <img src={loginuser} alt="Pict-CodeLab" className="img" />
        <p className="opt-name">Submitted Codes</p>
      </div>
      <div
        className="sidebarmenuitem"
        onClick={(e) => e.target.classList.toggle("sidebarmenuitemactive")}
      >
        <img src={loginuser} alt="Pict-CodeLab" className="img" />
        <p className="opt-name">Study Material</p>
      </div>
      <p className="menu-name">ACCOUNT</p>
      <div
        className="sidebarmenuitem"
        onClick={(e) => e.target.classList.toggle("sidebarmenuitemactive")}
      >
        <img src={loginuser} alt="Pict-CodeLab" className="img" />
        <p className="opt-name">Profile</p>
      </div>
      <div
        className="sidebarmenuitem"
        onClick={(e) => e.target.classList.toggle("sidebarmenuitemactive")}
      >
        <img src={logoutuser} alt="Pict-CodeLab" className="img" />
        <p className="opt-name">Log Out</p>
      </div>
    </div>
  );
}
Via Active questions tagged javascript - Stack Overflow https://ift.tt/mrOCHFT

Comments

Popular posts from this blog

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console...

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

The number of nodes and edges I calculated manually and by a method provided by networkx library dont match

I am trying to analyse a graph using networkx library in Python. I have implemented a function that returns the nodes and edges of that graph. After that I counted the number of nodes and edges by implementing the len() function for nodes and edges, which gave me 17 for both nodes and edges. However, when I used the method graph.number_of_nodes() of networkx library it gave me 53. My code: import pandas as pd import networkx as nx import matplotlib.pyplot as plt header_list = ["a","b","w"] E =pd.read_csv("aves-barn-swallow-contact-network.edges",sep=" ",header= None,names=header_list) # print(E.head()) # prints first few rows of the csv file G = nx.from_pandas_edgelist(E,"a","b",["w"]) nx.draw(G) plt.show() class GraphAnalyse: #finding nodes and edges def nodeEdge(self,Graph): nodes = Graph.nodes() edges = Graph.edges() ...