【React】React ~ Material UI / あれこれ編 ~

◾️はじめに

React の Material UI (MUI) に関するTipsを
徐々にまとめておく

目次

【1】ライト・ダークテーマの切替
【2】Tooltipの表示
【3】Iconの表示

【1】ライト・ダークテーマの切替

src/App.tsx

import * as React from 'react';
import {
  Button,
  Container,
  Typography,
  CssBaseline,
  createTheme,
  ThemeProvider,
} from '@mui/material';

function App() {
  // true = ダークモード、false = ライトモード
  const [darkMode, setDarkMode] = React.useState(false);

  // MUI のテーマを作成
  const theme = React.useMemo(
    () =>
      createTheme({
        palette: {
          mode: darkMode ? 'dark' : 'light',
        },
      }),
    [darkMode]
  );

  return (
    <ThemeProvider theme={theme}>
      {/* CssBaselineで背景や文字色を自動的にテーマに合わせる */}
      <CssBaseline />

      <Container
        maxWidth="sm"
        sx={{
          textAlign: 'center',
          marginTop: '100px',
        }}
      >
        <Typography variant="h4" gutterBottom>
          Hello World from React + MUI + TypeScript!
        </Typography>

        <Button
          variant="contained"
          color="primary"
          sx={{ marginTop: 2 }}
          onClick={() => alert('Hello MUI + TypeScript!')}
        >
          Click Me
        </Button>

        <Button
          variant="outlined"
          sx={{ marginTop: 2, marginLeft: 2 }}
          onClick={() => setDarkMode((prev) => !prev)}
        >
          Toggle {darkMode ? 'Light' : 'Dark'} Mode
        </Button>
      </Container>
    </ThemeProvider>
  );
}

export default App;
機能 説明
Container レイアウト(配置
Typography テキスト表示
sx プロパティ スタイル指定が可能
ThemeProvider 全体にテーマ(色・フォントなど)を適用
createTheme MUI標準テーマを作成(mode に "dark" or "light" を指定)
CssBaseline テーマに合わせて背景や文字色を自動調整
useMemo テーマ再生成の最適化(パフォーマンス向上)

【2】Tooltipの表示

* Tooltipの表示するためには、
 対象を<Tooltip title="xxx">〜</Tooltip >で囲むだけ

サンプル

import {
  Tooltip,
  Button
} from '@mui/material';

export default function BasicTooltip() {
  return (
    <Tooltip title="This is a tooltip.">
      <Button>Hover me</Button>
    </Tooltip>
  );
}

【3】Iconの表示

Step1: アイコン探し

* 以下のサイトで欲しいアイコンを探す

https://mui.com/material-ui/material-icons/

Step2: アイコン設定

import MenuOpenIcon from '@mui/icons-material/MenuOpen'

<MenuOpenIcon />

関連記事

React ~ 入門編 ~ * https://dk521123.hatenablog.com/entry/2020/04/29/000000
React ~ Material UI / 入門編 ~
https://dk521123.hatenablog.com/entry/2025/10/14/224514
React ~ Material UI / Spacing ~
https://dk521123.hatenablog.com/entry/2025/11/09/230101