Skip to main content

create state with dynamic property

i use react js in my project.in my project i have two lvl menu and when mouse enter event occured sub menu showed and when mouse leave event occured sub menu disappear.my problem is when mouse enter event occure on a li all of sub menues appear.and thats because i have just one state.i don't know how can i create a dynamic state.i have mainMenu array that store all menu and sub menu in that and this is absolutely dynamic.(in my example length of my array is 2 but this can be changed) i have a boolean state (isMenuOpen).when it is true sub menu appear and when its false sub menu disappear.i want when mouse enter event occure on a li just appear submenu that related to that li.

this is my App.js

import "./index.css";
import './App.css';
import Sub from "./Sub";
import React, {useState} from "react";

export default function App() {

    const mainMenuArr = [
        {
            id: "1",
            name: "All Products",
            url: "#",
            items: [
                {
                    id: "1-1",
                    name: "our gifts",
                    url: ""
                },
                {
                    id: "1-2",
                    name: "note book",
                    url: ""
                },
                {
                    id: "1-3",
                    name: "calender",
                    url: ""
                }
            ]
        }, {
            id: "2",
            name: "Business Card",
            url: "#",
            items: [
                {
                    id: "2-1",
                    name: "triangle",
                    url: ""
                },
                {
                    id: "2-2",
                    name: "square",
                    url: ""
                },
                {
                    id: "2-3",
                    name: "circle",
                    url: ""
                },
                {
                    id: "2-4",
                    name: "rectangle",
                    url: ""
                },
            ]
        }
    ]

    const [isMenuOpen, setIsMenuOpen] = useState(false);

    const openSubMenu = () => {
        setIsMenuOpen(true);
    }
    const closeMenu = () => {
        setIsMenuOpen(false);
    }

    const mainMenu = mainMenuArr.map(main => {
        return (
            <li onMouseEnter={openSubMenu} onMouseLeave={closeMenu} key={main.id} id={main.id} className='main__item'>
                {main.name}
                <Sub isOpen={isMenuOpen} subItems={main.items}/>
            </li>
        );
    })
    return (
        <div className="container">
            <ul className="main__items">
                {mainMenu}
            </ul>


        </div>
    );
}

this is my App.css

.container{
  background-color: #eee;
  height: 40px;
}
.main__items{
  display: flex;
  position: relative;
}
.main__item{
  margin: 0 20px;
  cursor: pointer;
}

this is my Sub.js

import React from 'react';
import PropTypes from 'prop-types';
import './Sub.css';

const Sub = props => {
    const subArr = props.subItems.map(item => {
        return (
            <li key={item.id} id={item.id} className='sub__item'>
                {item.name}
            </li>
        );
    });

    return (
        <>
            {props.isOpen ?
                <ul className='sub__items'>
                    {subArr}
                </ul>
                : null
            }
        </>
    );
};

Sub.propTypes = {};

export default Sub;

and this is my Sub.css

.sub__items{
    position: absolute;
    top: 40px;
    background-color: bisque;
}
.sub__item{
    margin: 10px;
}

I would be very grateful if anyone could help me

Via Active questions tagged javascript - Stack Overflow https://ift.tt/2FdjaAW

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() ...