You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Material UI 如何在表单提交后关闭Accordion折叠面板?

实现方案

步骤1:新增控制Accordion展开状态的State

MUI的Accordion支持受控调用模式,你只需要先在组件内声明一个布尔类型的state来绑定它的展开/折叠状态:

import { useState } from 'react';

// 组件逻辑内声明状态
const [isAccordionExpanded, setIsAccordionExpanded] = useState(false);

如果需要Accordion默认是展开状态,把useState的初始值改为true即可。

步骤2:给Accordion绑定受控属性

给Accordion组件添加expanded和onChange属性,将状态和组件关联,既支持用户手动点击切换展开折叠,也支持你通过代码控制状态:

<Accordion 
  elevation={3}
  expanded={isAccordionExpanded}
  onChange={(event, newExpandedState) => setIsAccordionExpanded(newExpandedState)}
>
  <AccordionSummary expandIcon={<ExpandMoreIcon />} aria-controls="panel1a-content" id="panel1a-header">
  </AccordionSummary>
  <AccordionDetails>
    <form onSubmit={onSubmit}>
    </form>
  </AccordionDetails>
</Accordion>

步骤3:在提交成功回调中修改状态触发折叠

你只需要在Firebase新增数据成功的.then回调里,把状态设置为false,就能自动折叠Accordion了,修改后的提交逻辑如下:

const onSubmit = e => {
    e.preventDefault();
    firebase
      .firestore()
      .collection("meals")
      .add({
        Name : name,
      })
      .then(() => {
        setName("");
        // 新增这行代码触发折叠
        setIsAccordionExpanded(false);
      });
  };

内容的提问来源于stack exchange,提问作者Paul VI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:54:10