reactjs - Material UI 单独旋转菜单图标
问题描述
当我单击导航栏中的一个按钮时,我只想翻转一个图标而不是导航栏中的所有图标。现在,当我单击一个按钮时,所有图标都会翻转,而不仅仅是我单击的那个。
这是一个演示:https ://codesandbox.io/s/festive-frost-53nny
任何帮助是极大的赞赏。
解决方案
您正在为所有项目使用一种打开状态。创建一个开放项目数组,例如您的锚点数组。
import "./styles.css";
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import clsx from "clsx";
import Button from "@material-ui/core/Button";
import { KeyboardArrowUp } from "@material-ui/icons";
import AppBar from "@material-ui/core/AppBar";
import Toolbar from "@material-ui/core/Toolbar";
import { menuItems } from "./menuItems";
const useStyles = makeStyles((theme) => ({
openX: {
transform: "scaleX(1)"
},
closeX: {
transform: "scaleX(-1)"
},
openY: {
transform: "scaleY(1)"
},
closeY: {
transform: "scaleY(-1)"
}
}));
export default function App() {
const classes = useStyles();
const [anchorEl, setAnchorEl] = React.useState(null);
const handleClick = (index, event) => {
setAnchorEl({ [index]: event.currentTarget });
setOpen((prevState) => {
const newState = [...prevState];
newState[index] = !prevState[index];
return newState;
});
};
const [open, setOpen] = React.useState(
new Array(Object.keys(menuItems).length).fill(false)
);
return (
<AppBar>
<Toolbar>
<div>
{Object.keys(menuItems).map((item, index) => (
<div key={index}>
<React.Fragment>
<Button onClick={(e) => handleClick(index, e)}>
{item}
<KeyboardArrowUp
className={clsx(
!open[index] && classes.closeY,
open[index] && classes.openY
)}
/>
</Button>
</React.Fragment>
</div>
))}
</div>
</Toolbar>
</AppBar>
);
}
推荐阅读
- wpf - 带有绑定的 Button.LostFocus 上的 WPF 触发器
- .net - 使用 SSH.NET 响应交互式 shell 提示
- nginx - X-Forwarded-Proto 标头作为 http 发送,即使在 nginx 中将值设置为 https
- reactjs - Material UI - 如何在条件下禁用选择
- xcode - Xcode 12 beta 不支持 iOS 13.6 beta 配置
- python - python解析以星号开头和结尾的文本
- python-3.x - Pandas 中的数据框转换
- javascript - 如何在reactjs中制作这样的自定义单选按钮
- node.js - MongoDB 聚合与 Mongoose 虚拟
- multithreading - 为什么设置 requestTimeout 时 ColdFusion 页面不超时?