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

如何设置shadcn ui Accordion组件默认展开指定项

如何设置shadcn ui Accordion组件默认展开指定项

嘿,我来帮你搞定这个问题!shadcn/ui的Accordion组件其实是基于Radix UI的Accordion封装的,所以得按Radix的规则来配置默认展开项~

你提到的defaultValue其实是正确的方向,但大概率是没配合对应Item的value属性一起使用才没生效,具体操作步骤如下:

  • 给外层的<Accordion>组件添加defaultValue属性,值设为你想要默认展开的那个面板的唯一标识(比如第一个面板设为"item-1")
  • 给每个<AccordionItem>组件设置对应的value属性,确保你想默认展开的Item的value和defaultValue完全匹配

给你一个完整的代码示例参考:

import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion";

export default function DefaultOpenAccordion() {
  return (
    <Accordion defaultValue="item-1">
      {/* 第一个面板的value和defaultValue一致,默认展开 */}
      <AccordionItem value="item-1">
        <AccordionTrigger>第一个面板(默认展开)</AccordionTrigger>
        <AccordionContent>
          这是第一个面板的内容,页面加载完成后就会自动展示出来啦
        </AccordionContent>
      </AccordionItem>
      <AccordionItem value="item-2">
        <AccordionTrigger>第二个面板</AccordionTrigger>
        <AccordionContent>
          这是第二个面板的内容,默认处于折叠状态
        </AccordionContent>
      </AccordionItem>
      <AccordionItem value="item-3">
        <AccordionTrigger>第三个面板</AccordionTrigger>
        <AccordionContent>
          这是第三个面板的内容,同样默认折叠
        </AccordionContent>
      </AccordionItem>
    </Accordion>
  );
}

如果之后你需要手动控制面板的展开/折叠状态(比如通过按钮触发),可以改用受控模式:用value代替defaultValue,同时配合onValueChange事件来更新状态值。但如果只是需要默认展开第一项,上面的非受控模式就完全够用啦。

备注:内容来源于stack exchange,提问作者Souvik Das

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 11:18:06