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

如何实现按钮控制Ant Design Collapse组件全部展开/折叠功能

实现方案

defaultActiveKey 属于非受控属性,仅在组件首次初始化渲染时生效,无法后续动态修改。要实现动态切换全部展开/折叠,需要使用受控属性 activeKey 绑定状态,通过修改状态值控制面板状态。

以下是适配固定面板数量的代码片段:

import React, { useState } from 'react';
import { Collapse, Button, Space } from 'antd';

const { Panel } = Collapse;
// 按你实际的面板key修改该数组即可,和下方Panel的key一一对应
const ALL_PANEL_KEYS = ['1', '2', '3'];

const CollapseController = () => {
  const [activeKey, setActiveKey] = useState([]);

  return (
    <div style={{ padding: 24 }}>
      <Space style={{ marginBottom: 16 }}>
        <Button onClick={() => setActiveKey(ALL_PANEL_KEYS)}>全部展开</Button>
        <Button onClick={() => setActiveKey([])}>全部折叠</Button>
        {/* 单个切换按钮的写法,不需要可以删除 */}
        <Button 
          onClick={() => setActiveKey(prev => 
            prev.length === ALL_PANEL_KEYS.length ? [] : ALL_PANEL_KEYS
          )}
        >
          切换所有面板状态
        </Button>
      </Space>

      <Collapse activeKey={activeKey} onChange={setActiveKey}>
        <Panel header="面板1" key="1">
          面板1的内容
        </Panel>
        <Panel header="面板2" key="2">
          面板2的内容
        </Panel>
        <Panel header="面板3" key="3">
          面板3的内容
        </Panel>
      </Collapse>
    </div>
  );
};

export default CollapseController;

补充说明

  • 代码中onChange={setActiveKey}用于保留用户手动点击单个面板切换的能力,不需要该特性可以移除该属性。
  • 如果是Ant Design v5版本,API逻辑完全一致,无需额外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:39:03