reactjs - 基于悬停或单击事件将类名添加到 React 组件
问题描述
如何根据任一事件将 className 添加到 div。
下面是我的代码。
我试过了:
className={isActive ? "active" : "", isClicked ? "clicked" : ""}
但这仅在单击事件时才有效。
这在事件悬停时有效
className={isActive ? "active" : ""}
当它被点击时也是如此
className={isClicked ? "clicked" : ""}
就是不在一起。
我究竟做错了什么?
这是我的完整代码:
const [isActive, setIsActive] = useState(false);
const [isClicked, setIsClicked] = useState(false);
<MenuButton
onMouseEnter={() => setIsActive(!isActive)}
onMouseLeave={() => setIsActive(!isActive)}
onClick={() => setIsClicked(!isClicked)}
className={`${isActive ? "active" : ""} ${isClicked ? "clicked" : ""}`}
>
const MenuButton = styled.div`
background: #3498db;
&.clicked {
display: none;
}
&.active {
transform: scale(1.2, 1.2) translate3d(0, 0, 0);
}
`;
更新:我现在已经在我的 css 中包含了我的事件、状态以及我如何使用它们
解决方案
您可以使用字符串文字。
className={`${isActive ? "active" : ""} ${isClicked ? "clicked" : ""}`}
或分离逻辑:
const isActiveClass = isActive ? 'active' : '';
const isClickedClass = isClicked ? 'clicked' : '';
className={`${isActiveClass} ${isClickedClass}`}
或者您可以使用库来实现类似的效果。
推荐阅读
- php - 有条件地将附加“meta_query”数组附加到 WP_Query 的最佳方法是什么
- android - 不能将模型实体用于房间。尝试了以下构造函数,但它们未能匹配
- javascript - 随机问题顺序
- graphql - GraphQL,Apollo 服务器联合模式
- php - 如何将新列数据保存到 laravel 数据透视表中?
- mysql - 如何确保多对多关系具有相同的外键
- c++ - 将 Win32 对话框中的图标设置为默认图标
- node.js - Nodejs无法为Angular项目编译
- javascript - react-native-hms-maps 地图为空白
- r - 执行功能时出现子集问题