- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下虚拟项目,其中包含一个下拉菜单:
https://codesandbox.io/s/react-dropdown-class-wtzuf
(点击左上角的“+”按钮)
这是以下源代码:src\components\header\header.jsx
。
import React from 'react';
import './header.scss'
import ReactCSSTransitionGroup from 'react-addons-css-transition-group';
class Header extends React.Component {
constructor(props) {
super(props);
this.toggleMenu = this.toggleMenu.bind(this);
this.state = {
menuActive: false
};
}
toggleMenu() {
let menuState = !this.state.menuActive;
this.setState({
menuActive: menuState
});
}
render() {
let menu;
if (this.state.menuActive) {
menu = <div className="dropdown">
<ul>
<li>First Item </li>
<li>Second Item </li>
<li>Third Item </li>
</ul>
</div>
} else {
menu = "";
}
return (
<div id="menu">
<button href="#" onClick = { this.toggleMenu }>+</button>
<ReactCSSTransitionGroup transitionName="menu" transitionEnterTimeout={1000} transitionLeaveTimeout={1000}>
{menu}
</ReactCSSTransitionGroup>
</div>
)
}
}
export default Header;
我的目标是:将上面的示例转换为使用 React Hooks
。
我对此链接做了一个实验:
https://codesandbox.io/s/react-dropdown-hooks-8nvut
但没有成功。
这是我尝试过的:
import React, { useState } from 'react';
import './header.scss'
import ReactCSSTransitionGroup from 'react-addons-css-transition-group';
function Header() {
const [menuActive, setMenuActive] = useState(false);
const toggleMenu = () => { setMenuActive(!menuActive) };
let menu = () => menuActive? <div className="dropdown">
<ul>
<li>First Item </li>
<li>Second Item </li>
<li>Third Item </li>
</ul>
</div>: ""
return (
<div id="menu">
<button href="#" onClick = { toggleMenu }>+</button>
<ReactCSSTransitionGroup transitionName="menu" transitionEnterTimeout={1000} transitionLeaveTimeout={1000}>
{menu}
</ReactCSSTransitionGroup>
</div>
)
}
export default Header;
使用最后一个代码,下拉菜单无法打开。
您能提供一下可以实现此目的的代码吗?
如果可能的话,您可以提供 fork 的codesandbox.io
。
谢谢!
最佳答案
您可以查看 Header.jsx 上的代码并仔细检查您的菜单
在您与类组件的第一个链接上,这是代码
menu = <div className="dropdown">
<ul>
<li>First Item </li>
<li>Second Item </li>
<li>Third Item </li>
</ul>
</div>
但是,当用钩子(Hook)重新实现它时,您将菜单初始化为函数
menu = () => menuActive ?
<div className="dropdown">
<ul>
<li>First Item </li>
<li>Second Item </li>
<li>Third Item </li>
</ul>
</div>
: null;
如果您希望将其作为函数,则应该调用 menu
函数
return (
<div id="menu">
<button href="#" onClick={toggleMenu}>+</button>
<ReactCSSTransitionGroup transitionName="menu" transitionEnterTimeout={1000} transitionLeaveTimeout={1000}>
{menu()}
</ReactCSSTransitionGroup>
</div>
);
关于javascript - React Hooks 与 ReactCSSTransitionGroup 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58602631/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!