Back to Heroui

DisclosureGroup 折叠面板组

apps/docs/content/docs/cn/react/components/(navigation)/disclosure-group.mdx

3.2.03.3 KB
Original Source

引入

tsx
import { DisclosureGroup } from '@heroui/react';

用法

<ComponentPreview name="disclosure-group-basic" minHeight="580px" />

组件结构

导入所有子部分并组合使用。

tsx
import {DisclosureGroup, Disclosure} from '@heroui/react';

export default () => (
  <DisclosureGroup>
    <Disclosure id="item1">
      <Disclosure.Heading>
        <Disclosure.Trigger>
          <Disclosure.Indicator />
        </Disclosure.Trigger>
      </Disclosure.Heading>
      <Disclosure.Content />
    </Disclosure>
  </DisclosureGroup>
)

受控

你可以使用 expandedKeysonExpandedChange props,通过外部导航控件控制哪些 Disclosure 处于展开状态。

<ComponentPreview name="disclosure-group-controlled" minHeight="580px" />

<RelatedShowcases component="DisclosureGroup" /> <RelatedComponents component="disclosuregroup" />

样式

传入 Tailwind CSS 类

tsx
import {
  DisclosureGroup,
  Disclosure,
  DisclosureTrigger,
  DisclosurePanel
} from '@heroui/react';

function CustomDisclosureGroup() {
  return (
    <DisclosureGroup className="border rounded-lg p-4 space-y-2">
      <Disclosure id="first" className="border-b pb-2">
        <DisclosureTrigger>Item 1</DisclosureTrigger>
        <DisclosurePanel>Content 1</DisclosurePanel>
      </Disclosure>
      <Disclosure id="second">
        <DisclosureTrigger>Item 2</DisclosureTrigger>
        <DisclosurePanel>Content 2</DisclosurePanel>
      </Disclosure>
    </DisclosureGroup>
  );
}

自定义组件类

若要自定义 DisclosureGroup 组件类,可以使用 @layer components 指令。

了解更多.

css
@layer components {
  .disclosure-group {
    @apply w-full;

    /* Performance optimization */
    contain: layout style;
  }
}

HeroUI 遵循 BEM 方法论,确保组件变体与状态可复用且易于自定义。

CSS 类

DisclosureGroup 组件使用以下 CSS 类(查看源码样式):

基础类

  • .disclosure-group - 带布局 containment 的基础容器样式

交互状态

组件同时支持 CSS 伪类与 data 属性,以便灵活控制状态:

  • 禁用:在整个组合上使用 :disabled[aria-disabled="true"]
  • 展开管理:自动管理子 Disclosure 项上的 [data-expanded] 等状态

API 参考

DisclosureGroup Props

Prop类型默认值描述
expandedKeysSet<Key>-当前展开项(受控)
defaultExpandedKeysIterable<Key>-初始展开项(非受控)
onExpandedChange(keys: Set<Key>) => void-展开项变化时调用的处理函数
allowsMultipleExpandedbooleanfalse是否允许多项同时展开
isDisabledbooleanfalse是否禁用组内全部 Disclosure
childrenReactNode | RenderFunction-要渲染的 Disclosure 项
classNamestring-额外的 CSS 类

RenderProps

使用渲染 prop 模式时,会提供以下值:

Prop类型描述
expandedKeysSet<Key>当前展开的 key
isDisabledboolean组合是否禁用