恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

5 分钟搞定 Material-UI Accordion:折叠面板从基础到嵌套 FAQ 实战

  • 首页
  • 资讯中心
  • /
  • 5 分钟搞定 Material-UI Accordion:折叠面板从基础到嵌套 FAQ 实战

相关资讯

前端校招笔试真题解析:欢聚时代2018年A卷考点拆解 2026/8/29 22:00:18
深度解析欢聚时代校招前端A卷:从JavaScript到浏览器原理 2026/8/29 22:00:18
OpenViking 接入 TRAE / TraeCode CLI:国内 Agent 上下文增强完整指南 2026/8/29 22:00:18

最新资讯

牙科AI训练数据集:多类别蛀牙精细分割实战指南
03-vscode
CSP-S 2022 提高级 第一轮 阅读程序(1)
Vue3上传(Upload)
百度校招网络笔试题深解:从TCP到epoll的底层原理与工程实践
如何为Caveman添加新的Compressor:压缩器注册与开发完全指南

今日推荐

云计算SPI三类服务模式是逐层抽象的关系:IaaS提供最底层的硬件资源,PaaS在IaaS基础上封装了开发运行环境,SaaS则进一步封装为可直接使用的软件
最新稳定版(Python 3.14):这是目前官方推荐的最新稳定版本。作为最后一个采用传统“3.x”命名的版本
etc目录下的profile.d文件目录设置环境变量和全局脚本shell

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

5 分钟搞定 Material-UI Accordion:折叠面板从基础到嵌套 FAQ 实战

发布时间:2026/8/29 22:05:18
5 分钟搞定 Material-UI Accordion:折叠面板从基础到嵌套 FAQ 实战 5 分钟搞定 Material-UI Accordion折叠面板从基础到嵌套 FAQ 实战【免费下载链接】material-uiMaterial UI: Comprehensive React component library that implements Googles Material Design. Free forever.项目地址: https://gitcode.com/GitHub_Trending/ma/material-uiMaterial-UImui/material的折叠面板 Accordion 是收纳页面内容的标准组件。本文一次讲清 React 折叠面板用法4 个核心组件分工、常用属性速查、Accordion 受控组件写法、unmountOnExit 性能优化、ARIA 无障碍配对以及嵌套折叠面板实战看完就能用在 FAQ 和文档目录上。什么页面需要折叠面板产品 FAQ、设置页的分区开关、文档侧边目录都是它的典型战场。共同点是内容层级多、一次全展示会刷屏但用户其实只关心其中一两块。折叠面板让收起成为默认姿态把首屏留给真正重要的内容。组件角色拆解一个四人小队把 Accordion 系统想成四个角色在搭积木组件角色比喻干什么的Accordion整扇门容器持有展开状态第一个子元素必须是 SummaryAccordionSummary门把手标题栏整块可点击展开/折叠就靠它AccordionDetails门后的房间包裹正文内容AccordionActions门内的按钮面板可选横排操作按钮如了解更多重置状态通过 Context 在Accordion和AccordionSummary之间传递所以你不需要手动把它们绑在一起写对顺序即可。组件源码在packages/mui-material/src/Accordion、packages/mui-material/src/AccordionSummary、packages/mui-material/src/AccordionDetails、packages/mui-material/src/AccordionActions四个目录下。最小可用示例先看最简的长什么样import * as React from react; import Accordion from mui/material/Accordion; import AccordionDetails from mui/material/AccordionDetails; import AccordionSummary from mui/material/AccordionSummary; import Typography from mui/material/Typography; export default function BasicAccordion() { return ( Accordion AccordionSummary Typography什么是 Material-UI/Typography /AccordionSummary AccordionDetails Typography一个实现 Material Design 的 React 组件库。/Typography /AccordionDetails /Accordion ); }就这一小段一个能点开的 Material-UI 折叠面板就出来了Summary 是把手Details 是房间点把手房间就现形。属性速查表常用配置一目了然属性类型默认值一句话说明expandedbool—受控模式下的展开状态面板完全听你的defaultExpandedboolfalse首次渲染是否展开之后面板自己管onChangefunc—状态变化回调签名(event, isExpanded)disabledboolfalse禁用整个面板点 Summary 无反应expandIconnode—传给 Summary右侧的展开指示图标squareboolfalse去掉圆角适合贴边排布disableGuttersboolfalse展开时不加上下 16px 间距slotProps.transitionobject{}控制内部 Collapse 的timeout、unmountOnExit等挑两个高频的看一眼。想换掉默认的箭头把expandIcon塞给 Summary旋转动画组件自己就帮你做了想锁住某个面板直接在Accordion上写disabled就行Summary 会跟着变灰不可点。import ArrowDropDownRoundedIcon from mui/icons-material/ArrowDropDownRounded; AccordionSummary expandIcon{ArrowDropDownRoundedIcon /} Typography自定义图标面板/Typography /AccordionSummary三种交互模式让面板听你的话React 折叠面板的玩法无非三种状态管理姿势按需求对号入座。非受控最简单面板自己记状态你只给初始值Accordion defaultExpanded AccordionSummary Typography默认展开/Typography /AccordionSummary AccordionDetails Typography首屏就想让用户看到的内容。/Typography /AccordionDetails /Accordion适用场景FAQ 里那条什么是 X想默认摊开其余随用户点。受控状态提到父组件面板变成纯展示这是典型的 Accordion 受控组件用法const [expanded, setExpanded] React.useState(false); Accordion expanded{expanded} onChange{(event, isExpanded) setExpanded(isExpanded)} AccordionSummary Typography受控面板/Typography /AccordionSummary AccordionDetails Typography状态在父组件手里。/Typography /AccordionDetails /Accordion适用场景展开后要联动其他逻辑比如埋点、跳转锚点、同步侧边栏高亮。手风琴模式多个面板互斥一次只开一个。用一个字符串存当前打开的是谁const [expanded, setExpanded] React.useState(panel1); {[panel1, panel2, panel3].map((id) ( Accordion key{id} expanded{expanded id} AccordionSummary Typography{问题 ${id.slice(-1)}}/Typography /AccordionSummary AccordionDetails Typography答案 {id}/Typography /AccordionDetails /Accordion ))}点开新的旧的自动收回——这是 FAQ 页面最常见的交互节奏。进阶两件事性能与无障碍性能上有个反直觉的点折叠面板收起时内容 DOM 其实还挂在树里Collapse 只是把高度收到 0。面板少时无所谓一旦页面上几十个面板、或 Details 里塞了复杂组件树白养的节点就开始拖累查询和内存。解决办法是把unmountOnExit: true递进slotProps.transitionAccordion slotProps{{ transition: { unmountOnExit: true } }}注意transition是内部插槽属性必须从这里递进去直接挂在Accordion上是无效的。无障碍方面组件会自己生成aria-controls/aria-labelledby配对只有你手动覆盖 id比如接入路由锚点时才需要手动补齐Accordion AccordionSummary idfaq-title aria-controlsfaq-content Typography常见问题标题/Typography /AccordionSummary AccordionDetails idfaq-content aria-labelledbyfaq-title Typography面板正文。/Typography /AccordionDetails /Accordion记住配对关系标题管controls指内容内容靠labelledby指标题屏幕阅读器就讲得清谁控制谁。嵌套折叠面板实战文档目录来了外层一个主面板分组内层两个子面板列具体条目——文档目录、分类 FAQ 都是这个骨架Accordion AccordionSummary Typography折叠面板 Accordion 指南/Typography /AccordionSummary AccordionDetails Accordion AccordionSummary Typography基础用法与属性/Typography /AccordionSummary AccordionDetails Typography导入、渲染以及 defaultExpanded 等配置。/Typography /AccordionDetails /Accordion Accordion defaultExpanded AccordionSummary Typography受控模式与手风琴/Typography /AccordionSummary AccordionDetails Typography用 state 管理 expanded实现互斥展开。/Typography /AccordionDetails /Accordion /AccordionDetails /Accordion这种外层管分组、内层管条目的嵌套结构特别适合文档站的目录树、电商的类目 FAQ、设置页的多级分组——层级再多用户每次也只面对一层。避坑小贴士ExpandMoreIcon属于图标包要单独import ExpandMoreIcon from mui/icons-material/ExpandMore忘了导会报 undefined。嵌套时外层 Summary 别再给expandIcon内层面板自带箭头否则右侧会出现两个图标打架。unmountOnExit、timeout这类过渡参数走slotProps.transition不要直接传给Accordion传了也不生效。disabled加在Accordion上不是 Summary 上后者只是把手锁不住整扇门。延伸阅读官方文档docs/data/material/components/accordion/accordion.md组件源码目录packages/mui-material/src/Accordion受控示例代码docs/data/material/components/accordion/ControlledAccordions.js【免费下载链接】material-uiMaterial UI: Comprehensive React component library that implements Googles Material Design. Free forever.项目地址: https://gitcode.com/GitHub_Trending/ma/material-ui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号