◾️はじめに
React で ダイアログ表示において コンポーネント間のデータの受け渡しをする際に props / state を学んだのでメモ
目次
【1】props 【2】state 1)使用上の注意 2)useState 【3】サンプル 例1:ダイアログ表示 例2:ダイアログを別コンポーネントに分ける場合
【1】props
* 親コンポーネントから子コンポーネントへの データ受け渡す際のインターフェース cf. props = プロパティ(Propaties)の略
【2】state
* コンポーネント自体の状態
1)使用上の注意
* state を持っているのは、親コンポーネント * 子コンポーネントは、stateを直接変更できない => 子コンポーネントから変更したい場合、props経由で変更を依頼する
2)useState
* React に「状態(state)」を作ってもらう命令 => 詳細は、以下の関連記事を参照のこと
React Hooks ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2025/10/28/233611
【3】サンプル
例1:ダイアログ表示
App.tsx
import React, { useState } from "react"; import { Button, Dialog, DialogTitle, DialogContent, DialogActions } from "@mui/material"; function App() { // 状態の管理 (開閉状態を管理する state) const [open, setOpen] = useState(false); // ダイアログを開く処理 = setOpen(true) const handleOpen = () => setOpen(true); // ダイアログを閉じる処理 = setOpen(false) const handleClose = () => setOpen(false); return ( <div style={{ textAlign: "center", marginTop: "50px" }}> <Button variant="contained" color="primary" onClick={handleOpen}> ダイアログを開く </Button> // <Dialog open={open}> = ダイアログ表示制御 // open に true/false を渡して制御する <Dialog open={open} onClose={handleClose}> <DialogTitle>タイトル</DialogTitle> <DialogContent> <p>ここに内容を書きます。</p> </DialogContent> <DialogActions> <Button onClick={handleClose}>閉じる</Button> </DialogActions> </Dialog> </div> ); } export default App;
例2:ダイアログを別コンポーネントに分ける場合
import React, { useState } from "react"; import { Button } from "@mui/material"; import { MyDialog } from "./MyDialog"; export default function App() { // 親コンポーネントでStateを管理 const [open, setOpen] = useState(false); return ( <> <Button variant="contained" onClick={() => setOpen(true)}> ダイアログを開く </Button> <MyDialog open={open} onClose={() => setOpen(false)} /> </> ); }
import React from "react"; import { Dialog, DialogTitle, DialogContent, DialogActions, Button } from "@mui/material"; // ★ propsを定義 type Props = { // Openかどうかの状態を定義 open: boolean; // onCloseイベントを定義 // 目的:このダイアログを閉じるための関数を親から受け取るため onClose: () => void; }; export const MyDialog: React.FC<Props> = ({ open, onClose }) => { return ( <Dialog open={open} onClose={onClose}> <DialogTitle>My Dialog</DialogTitle> <DialogContent>内容を書く場所です。</DialogContent> <DialogActions> <Button onClick={onClose}>閉じる</Button> </DialogActions> </Dialog> ); };
関連記事
React ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/04/29/000000
React ~ JSX ~
https://dk521123.hatenablog.com/entry/2025/10/27/235319
React Hooks ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2025/10/28/233611
React ~ Material UI / 入門編 ~
https://dk521123.hatenablog.com/entry/2025/10/14/224514
react-i18next ~ 多言語対応 ~
https://dk521123.hatenablog.com/entry/2025/10/13/230306
Vite 〜 入門編 〜
https://dk521123.hatenablog.com/entry/2025/10/08/004137