I aim to create a custom MUI accordion which should look like this:
现在,我已经try 使用这些代码 struct 创建这个自定义MUI Accordion(此Accordion还使用了一些自定义搜索框功能和自定义Accordion数据)
手风琴源代码:
import * as React from "react";
import { useState } from "react";
import AccordionMUI from "@mui/material/Accordion";
import AccordionSummary from "@mui/material/AccordionSummary";
import AccordionDetails from "@mui/material/AccordionDetails";
import Typography from "@mui/material/Typography";
import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
import "./globals.css";
import { accordionData } from "./accordionData.js";
import AddCircleIcon from "@mui/icons-material/AddCircle";
import RemoveCircleIcon from "@mui/icons-material/RemoveCircle";
export default function SimpleAccordion() {
const [search, setSearch] = useState("");
return (
<div>
<input
onChange={(e) => setSearch(e.target.value)}
type="text"
placeholder="Search"
/>
{accordionData
.filter((item) => {
return search.toLowerCase() === ""
? item
: item.sectionTitle.toLowerCase().includes(search);
})
.map((item) => (
<AccordionMUI key={item.id} className="accordionMui">
<AccordionSummary
expandIcon={<AddCircleIcon sx={{ color: "#384558" }} />}
aria-controls="panel1a-content"
id="panel1a-header"
>
<Typography>
<b>{item.sectionTitle}</b>
</Typography>
</AccordionSummary>
<AccordionDetails>
<Typography>{item.sectionContent}</Typography>
</AccordionDetails>
</AccordionMUI>
))}
</div>
);
}
CSS样式源代码:
.accordionMui {
background-color: rgba(242, 242, 242, 0.1);
box-shadow: none;
color: #384558;
}
#panel1a-header {
padding-top: 5%;
padding-bottom: 5%;
}
完整的工作演示在这里CodeSandbox.
我的问题是,我的手风琴的最后一条分隔线没有显示出来,不像它之前的部分,在它们下面有一条分隔线.我还想覆盖手风琴分隔线的样式并使其更粗.
我还想将折叠图标更改为它们各自的状态(未展开的Accordion将显示AddCircleIcon,展开的Accordion将显示RemoveCircleIcon),但出现了一个问题,当我使用这个三元条件expanded={expanded === 'panel1'}
时显示Cannot find name 'expanded',就像这个堆栈接受的问题(How to change icon when accordion summary is expanded?)一样.因此,我不确定如何更改基于展开或未展开状态的折叠图标.
我仍然很困惑,也不确定我应该在Accordion API of MUI上使用哪些类,获得一些关于正确定制和覆盖MUI中的手风琴组件的指南将会有很大的帮助,因为我还在学习MUI.
在这个问题上,你的回答确实会对我有很大帮助.非常感谢.