【问题标题】:toggle menu in react only responds to first click反应中的切换菜单仅响应第一次单击
【发布时间】:2019-09-26 07:16:40
【问题描述】:

我正在尝试在反应中制作一个切换菜单,该菜单在第一次点击时打开,但在随后的点击中没有任何反应(它应该在第二次点击时关闭),但是在第一次点击之后它不再识别任何点击。

const RightMenu = () => {
  const [menuOpen, setMenuOpen] = useState(false);

  const handleClick = e => {
    const el = document.getElementById("menu");
    if (menuOpen === false) {
      el.style.display = "block";
      setMenuOpen(true);
      console.log("menu opened: ");
      console.log(el);
    }
    if (menuOpen === true) {
      el.style.display = "none";
      setMenuOpen(false);
      console.log("menu closed");
      console.log(el);
    }
  };
return (
    <div style={style ? style : ""}>
      <div
        className="text-center"
        style={{
          borderTopLeftRadius: "10px",
          borderTopRightRadius: "10px",
          cursor: "pointer",
          display: "block"
        }}
        onClick={e => handleClick(e)}
      > Toggle div
      </div>
<div className="" id="menu" style={{ display: "none" }}>
menu to show
</div>
 );
};

任何帮助将不胜感激。

【问题讨论】:

标签: javascript reactjs ecmascript-6


【解决方案1】:

我在 Repl 上试过你的代码,效果很好。

import React, {Component, useState } from 'react';
import logo from './logo.svg';
import './App.css';
const App = () => {
const [menuOpen, setMenuOpen] = useState(false);

const handleClick = e => {
    const el = document.getElementById("menu");
    if (menuOpen === false) {
        el.style.display = "block";
        setMenuOpen(true);
        console.log("menu opened: ");
        console.log(el);
    }
    if (menuOpen === true) {
        el.style.display = "none";
        setMenuOpen(false);
        console.log("menu closed");
        console.log(el);
    }
};
return ( < div >
    <  div className = "text-center"
    style = {
        {
            borderTopLeftRadius: "10px",
            borderTopRightRadius: "10px",
            cursor: "pointer",
            display: "block"
        }
    }
    onClick = {
        e => handleClick(e)
    } >
    Toggle div <
    /div> < div className = "form-group" id = "menu" style = { { display: "none" } } >  menu to show < /div> < /div>
);
};
export default App;

【讨论】:

    猜你喜欢
    • 2017-12-22
    • 2022-12-15
    • 1970-01-01
    • 2020-06-21
    • 2021-12-04
    • 2019-12-24
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    相关资源
    最近更新 更多