javascript - 如何更改 React 组件中的 CSS 高度?

标签 javascript reactjs

我使用以下 JavaScript 代码在 0 高度和 X 高度之间切换。这是汉堡包图标的下拉菜单。

// Hamburger navigation
const menuToggle = document.querySelector(".menu-toggle");
const nav = menuToggle.parentElement;
const menuDropdown = document.querySelector(".menu-dropdown");

menuToggle.addEventListener("click", event => {
    event.preventDefault();
    nav.classList.toggle("is-open");

    const height = menuDropdown.scrollHeight;

    if (nav.classList.contains("is-open")) {
        menuDropdown.style.setProperty("height", height + "px");
    } else {
        menuDropdown.style.setProperty("height", "0");
    }
});

我可以在 React 中使用类似的方法来切换“is-open”类,并且它可以工作:

const [isOpen, setState] = useState(false)
const toggleNav = () => setState(!isOpen)

但是我该如何处理高度呢?

const height = menuDropdown.scrollHeight;

if (nav.classList.contains("is-open")) {
     menuDropdown.style.setProperty("height", height + "px");
} else {
     menuDropdown.style.setProperty("height", "0");
}

如果有任何建议,我将不胜感激。

最佳答案

使用带有反应大括号的样式属性{}

import React, { useState } from 'react';
import './Header.scss';

const Header = () => {
 const [Height, setHeight] = useState('0px');

 const handleClickMenu = () => ((Height == '0px') ? setHeight('80px') : 
 setHeight('0px'));

 return (
   <nav>
     <button 
       type='button' 
       onClick={handleClickMenu} 
       className='your-navbar-burger-class'
     >
       your-hamburger-button
     </button>

     <div 
       className='your-dropdown-menu-class'
       style={{ height: Height}}
     >
       //your dropdown
     </div>
   </nav>
 );
};

export default Header;

关于javascript - 如何更改 React 组件中的 CSS 高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61328672/

相关文章:

javascript - 如何使用 jQuery/JavaScript 检测 ios 设备并仅隐藏 iPhone 和 iPad 的 Bootstrap 模式?

javascript - 如何在渲染 Flexigrid 表时将 bool 值转换为是/否

javascript - MUI - React 无法识别 Datepicker 中 DOM 元素上的 `renderInput` Prop

javascript - Promise 内部 Array.map 还是循环替代方案?

javascript - 去抖动和 react 窗口调整这个引用问题

reactjs - 你应该如何使用 flowtype redux thunk ?

javascript - jquery点击事件没有触发

javascript - 在javascript中访问未知对象的属性

javascript - 结合 javascript 和 jquery 来填充多个隐藏字段 - 坏主意?

reactjs - 无法将 SVG 导入 Next.js