[React] material-uiでアプリ全体のテーマカラー・色を設定

 よくmaterial-uiのコンポーネントでcolor=”primary”など指定していると思います。

 createMuiTheme、ThemeProviderを使うことで、アプリ全域で使用するprimaryの色やsecondaryの色を一か所で設定することができます。

 最初に以下のようにcreateMuiThemeでテーマカラーを指定します。指定する色については以下のページを参照してください。

https://material-ui.com/customization/color/#color

import { createMuiTheme } from '@material-ui/core/styles';
import { green, orange } from '@material-ui/core/colors';

const theme = createMuiTheme({
  palette: {
    primary: {
      main: orange[500]
    }
    secondary: {
      main: green[500],
    },
  },
});

 次にアプリにテーマカラーを適用します。

 例えばApp.jsのようなアプリの起点のコンポーネントを以下のようにThemeProviderで囲うことで、囲ったコンポーネント全域でprimary, secondaryに指定した色が適用されます。

 イメージとしてはuseContextのProviderと同じように指定することで全域で適用するようにするイメージです。

import React from 'react';
import { createMuiTheme, ThemeProvider } from '@material-ui/core/styles';
import { green, orange } from '@material-ui/core/colors';

const theme = createMuiTheme({
  palette: {
    primary: {
      main: orange[500]
    }
    secondary: {
      main: green[500],
    },
  },
});


export default function App() {
  return (
    <ThemeProvider theme={outerTheme}>
      <ルートのコンポーネント />
    </ThemeProvider>
  );
}

コメントを残す

メールアドレスが公開されることはありません。