Reactjs 向引导菜单添加钩子

Reactjs 向引导菜单添加钩子,reactjs,react-hooks,Reactjs,React Hooks,嗨,我试图修改我的引导菜单使用挂钩(反应),从而能够切换菜单时,屏幕是移动大小 我有以下几点,但我被卡住了:-( import React,{useState}来自“React”; 从“react router dom”导入{Link,NavLink}; 常量导航栏=()=>{ 常量[isExpanded,setIsExpanded]=useState(false); 返回( GRT setIsExpanded(!isExpanded)} > 主页(当前) setIsExpanded(!

嗨,我试图修改我的引导菜单使用挂钩(反应),从而能够切换菜单时,屏幕是移动大小

我有以下几点,但我被卡住了:-(

import React,{useState}来自“React”;
从“react router dom”导入{Link,NavLink};
常量导航栏=()=>{
常量[isExpanded,setIsExpanded]=useState(false);
返回(
GRT
setIsExpanded(!isExpanded)}
>
  • 主页(当前)
  • setIsExpanded(!isExpanded)} > 故事
  • setIsExpanded(!isExpanded)} > 关于我们
  • setIsExpanded(!isExpanded)} > 联系我们
); }; 导出默认导航栏;
如果菜单按照正常方式使用jQuery,我希望它能够正常工作

我将需要移动到useEffect来管理菜单外的任何单击,以便稍后关闭菜单,但我现在正在努力实现这一点


我尝试过许多其他的解决方案,但现在都失败了,挂钩似乎是最灵巧的,我希望能提供更好的编码体验

你认为在div上设置isExpanded属性应该做什么?我认为你需要设置一个?你不能使用CSS hover吗?你真的需要使用state吗?我建议你选择查看
样式化组件
。它使您更容易实现所需的功能。感谢您的关注,我移动到React Bootstrap,现在已解决了我的问题:-)
import React, { useState } from "react";
import { Link, NavLink } from "react-router-dom";

const NavigationBar = () => {
  const [isExpanded, setIsExpanded] = useState(false);

  return (
    <nav className="navbar navbar-expand-lg fixed-top always-solid">
      <div className="container-fluid">
        <Link className="navbar-brand" to="/">
          GRT
        </Link>
        <button
          className="navbar-toggler"
          type="button"
          aria-controls="navbarNav"
          aria-expanded="false"
          aria-label="Toggle navigation"
          onClick={() => setIsExpanded(!isExpanded)}
        >
          <span className="custom-toggler-icon">
            <i className="fa fa-bars"></i>
          </span>
        </button>
        <div
          className="collapse navbar-collapse"
          isExpanded={isExpanded}
          id="navbarNav"
        >
          <ul className="navbar-nav mx-auto">
            <li className="nav-item active">
              <NavLink className="nav-link" to="/">
                Home<span className="sr-only">(current)</span>
              </NavLink>
            </li>
            <li className="nav-item">
              <NavLink
                className="nav-link"
                to="/stories"
                onClick={() => setIsExpanded(!isExpanded)}
              >
                Stories
              </NavLink>
            </li>
            <li className="nav-item">
              <NavLink
                className="nav-link"
                to="/about"
                onClick={() => setIsExpanded(!isExpanded)}
              >
                About Us
              </NavLink>
            </li>
            <li className="nav-item">
              <NavLink
                className="nav-link"
                to="/contact"
                onClick={() => setIsExpanded(!isExpanded)}
              >
                Contact Us
              </NavLink>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  );
};

export default NavigationBar;