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

如何让reactstrap Collapse首次加载时默认激活第一个下拉面板

解决默认展开第一个下拉面板的问题

要实现首次加载时默认展开第一个下拉面板(Article 1),同时保持点击切换时自动收起之前面板的逻辑,只需修改state的初始值即可:

修改步骤

  • 将useState的初始状态从空对象{}改为{ article: "1" },组件挂载时article的值就会是"1",对应面板的Collapse会自动展开。

修改后的完整代码

import * as React from "react";
import { Button, Card, CardBody, Collapse } from "reactstrap";
import "./styles.css";
import "bootstrap/dist/css/bootstrap.min.css";

export default function App() {
  // 初始设置article为"1",默认展开第一个面板
  const [state, setState] = React.useState({ article: "1" });
  const { article } = state;

  const handleArticleOpen = (article) => {
    setState((prevState) => ({
      ...prevState,
      article
    }));
  };

  return (
    <div className="app">
      <Card className="card">
        <CardBody className="card-body">
          <div className="section section-articles">
            <div className="articles-buttons">
              <Button
                className="article2-button"
                color="primary"
                onClick={() => handleArticleOpen("2")}
              >
                <h3>Article 2</h3>
              </Button>
              <Button
                className="article1-button"
                color="primary"
                onClick={() => handleArticleOpen("1")}
              >
                <h3>Article 1</h3>
              </Button>
            </div>

            <Collapse isOpen={article === "2"}>
              <Card className="card">
                <CardBody className="card-body">
                  <div>Article 2</div>
                </CardBody>
              </Card>
            </Collapse>
            <Collapse isOpen={article === "1"}>
              <Card className="card">
                <CardBody className="card-body">
                  <div>Article 1</div>
                </CardBody>
              </Card>
            </Collapse>
          </div>
        </CardBody>
      </Card>
    </div>
  );
}

逻辑说明

  • 初始状态设置article: "1",使得Collapse isOpen={article === "1"}在组件加载时为true,自动展开第一个面板。
  • 点击其他按钮时,handleArticleOpen会更新article的值,此时只有新选中的面板对应的isOpen为true,之前的面板会自动收起,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:46:33