[React/TypeScript]Material-UIを使ってアプリケーションのレイアウトを作成しよう

今回はReact.jsを勉強したい初学者が、この記事を読めば簡単にアプリケーションの作成とテンプレートなレイアウトが作れるようになるまで導いていきたいと思います。

今回はReact.jsを勉強したい初学者が、この記事を読めば簡単にアプリケーションの作成とテンプレートなレイアウトが作れるようになるまで導いていきたいと思います。

最終的に以下のようなレイアウトのアプリが作成ができるようになります。

環境構築

先に今回使用するライブラリのバージョンや依存関係を紹介します。

途中で環境構築に失敗した方は以下を参考ください。

では、環境構築について説明していきます。

Node.jsのインストールがまだの人は下記リンクからNode.jsをインストールしてください。

https://nodejs.org/ja

$ node -v

でバージョンが表示されればOKです。

次に、Reactアプリ作るコマンドを打ちます。

今回は、TypeScriptのコマンドを打ちました。

TypeScriptを使用しない場合「–template typescript」を入れずにコマンドを打つとReactアプリが立ち上がります。

my-appのところはディレクトリ名なので好きに命名して大丈夫です。

とコマンドを打ってWebブラウザが立ち上がり、localhostで以下のサンプルページが表示されればOKです。

Material-UIを使おう

Material-UIは、Reactアプリケーションで美しく設計されたUIを構築するためのオープンソースのUIコンポーネントライブラリです。

Reactプロジェクトでは、ほぼ必須とも言えるUIライブラリーなので是非使い方を覚えましょう。

公式サイトはこちら

導入は簡単です。

@emotion/reactは、Reactプロジェクトで使用されるCSS-in-JSライブラリの1つです。

CSS-in-JSは、JavaScriptコード内でスタイルを定義し、Cssファイルを作成することなくすべてのコードをJsで作成できるようになるので一緒にインストールしておきましょう。

さて、Material-UIですが、公式によってサンプルコードが公開されています。

例えば、ダッシュボードのサンプルコードはこちらから見ることができます。

サンプルコードから学べることは多いので目を通しておくことをおすすめします。

 

Layoutコンポーネントを作成

自分のアプリケーションの標準レイアウトを作成しましょう。

世の中には様々なアプリケーションがありますが、画面遷移したら全然違うレイアウトになることはほとんどありません。

多くの場合で、ヘッダー、フッター、サイドメニュー等共通のレイアウトなはずです。

共通のレイアウトの実装を目指します。

先に完成形をお見せします。

ファイル構成としては「src/component/templetes/Layout.tsx」に収納します。

今回作成するディレクトリ構成については以下をご参考ください。

では、早速実装してみましょう。

まずは以下をLayoutコンポーネントとして作成してください。

先にサイドメニューコンポーネントとthemeコンポーネントを作成する必要があるのでひとまずここまでで大丈夫です。

次に移りましょう。

自分だけのアプリケーションテーマを作成しよう

一般的なアプリケーションでは、アプリケーション全体で均一なスタイルを維持するために、テーマを設定することが重要です。

Material-UIを用いて実装してみましょう。

「src/style/theme.ts」にてテーマを定義しましょう。

https://mui.com/material-ui/customization/color/を参考に実装しましょう。

このように記述するだけでテーマカラーを設定できました。

また、typographyオブジェクト内では、テキストのスタイルを指定することができます。

例としてh4について指定しました。

その他のコンポーネントに対してもカスタマイズができるのでこちらからご確認ください。

ちなみにテーマを自分で指定しないとこのようなスタイルになります。

最初お見せした完成形との差分がわかるかと思います。

 

サイドメニューを作成しよう

続いてアプリケーション内の画面遷移ができるサイドメニューを作ります。

先程のサンプルコードのlistItemsを参考にサイドメニューを作成していきます。

Listコンポーネントについてはこちらからご確認ください。

ファイル構成としては「src/component/templetes/SideMenu.tsx」に収納します。

とするとサイドメニューのアイコンをクリックしたとき画面遷移ができるサイドメニューを作成することができます。

Layoutコンポーネントを編集しよう。

さて、先程のサンプルコードを参考にLayout.tsxを完成させていきます。

こうするとタイトルと子コンポーネントを反映できる標準レイアウトを作成することができます。

通知ボタンについては、余力があれば作り込んでみてください。

では、早速Layoutコンポーネントを活用してみましょう。

Layoutコンポーネントを活用しよう

では、「component/pages/Home」ファイルにて作成したLayoutコンポーネントを活用してみます。

先程のLayoutコンポーネントを用いてタイトルがHomeのページを作成することができました。

 

続いてApp.tsも編集していきます。

まず、ページ遷移にはreact-router-domを用います。

詳しくはこちらから

インストールができたら準備OKです。

こうすることにより、pathが’/’のときHomeコンポーネントを描画するように設定できます。

リンクを増やしたい場合、

などを挿入してあげると追加することができます。

これで完成です。

とコマンドを打って、完成を見てみましょう!

 

このようになりました。

今風なレイアウトになったんじゃないでしょうか?

みなさんも是非試してみてください。

この記事が気に入ったら
いいね ! しよう

Twitter で

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ