MUIのAccordionのopen/closeをソースコードで操作する方法
公開日:
更新日:
デモ:
やり方:expandedというPropsを利用する
App.js
1import {
2 useState,
3 useContext,
4 useEffect,
5 useMemo,
6 useCallback,
7 useRef,
8} from "react";
9import * as React from "react";
10import Accordion from "@mui/material/Accordion";
11import AccordionActions from "@mui/material/AccordionActions";
12import AccordionSummary from "@mui/material/AccordionSummary";
13import AccordionDetails from "@mui/material/AccordionDetails";
14import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
15import Button from "@mui/material/Button";
16
17export default function App() {
18 const handlePanelChange = (openPanel) => {
19 setOpenPanel(!openPanel);
20 };
21
22 const handleClick = () => {
23 setOpenPanel(!openPanel);
24 };
25
26 const [openPanel, setOpenPanel] = useState(false);
27
28 return (
29 <div className="App" style={{ margin: 100 }}>
30 <Accordion
31 onChange={() => {
32 handlePanelChange(openPanel);
33 }}
34 expanded={openPanel}
35 >
36 <AccordionSummary
37 expandIcon={<ExpandMoreIcon />}
38 >
39 test Accordion
40 </AccordionSummary>
41 <AccordionDetails>ボタンからも開閉を操作できます</AccordionDetails>
42 </Accordion>
43
44 <Button variant="contained" onClick={handleClick} sx={{ margin: 10 }}>
45 開閉
46 </Button>
47 </div>
48 );
49}
50
useState
でアコーディオン開閉用の変数(今回ならopenPanel)を用意してあげます。
Accordion
のonChange
にはopenPanelを反転させる関数を設定すれば問題なく動作します
※参考記事: MUI公式サイト accordionのAPI説明ページ
以上、MUIのアコーディオンを使用する際のTipsでした。
お役に立てましたら幸いです。
ご一読頂き、ありがとうございました。