Laravel×ReactでつくるSPAスケジュールアプリ【④スケジュール表示】

LaravelとReactで作るSPAアプリ第4段です。
今度はReactでカレンダー上にスケジュールを表示していきましょう。

Laravel×ReactでつくるSPAスケジュールアプリ【④スケジュール表示】

データベースに接続、登録しよう

今回作成するスケジュールの完成形は以下の通りです。

カレンダーの上にスケジュールを表示しています。
前回の記事でカレンダーの構築は出来ているので、スケジュールのみを表示しましょう。
その準備段階として、まずはデータベースに接続します。

データベースに接続するための情報はdocker_desktopで確認できます。
デスクトップにあるdocker_desktopをダブルクリックしてアプリを立ち上げます。

「Running」になっているコンテナがあると思うのでその行をクリック。
出てきた「コンテナ名_mysql_1」をクリックしましょう。

上のタブで表示を「INSPECT」に切り替えてください。
ここにある情報を用いて、データベースにログインできます。

さて、この情報は一旦控えておき、Laravelの機能を用いてスケジュール専用のテーブルを作成しましょう。
まずはマイグレーションファイルを作成します。
Windows Power Shellに以下を入力

「database/migrations」のディレクトリに「create_schedules」のphpファイルが自動生成されます。
そちらを開いて、中を編集します。

create_schedules_tables.php
up()部分を編集してください。
これで、データベースのカラムの設定ができたので、マイグレーションを実行します。
上記のような表示が出ていれば成功しています。
先程のデータベース情報を用いてデータベースにアクセスしてみましょう。
今回は無料のデータベースツールであるDBeaverを使用しました。

きちんとテーブルが作られていることが確認できますね。
次に表示用にデータを投入しましょう。
今回はあくまでも表示することがメインなので、2件程度データを投入しておけば良いでしょう。

それでは次のステップでこの2件のスケジュールを表示させてみましょう。

スケジュールを取得しよう!

表示をする前に、データベースからデータを取得する処理をLaravelで記載します。
表示はReactで、次のステップですね。
Laravelでデータを取得するために、データ取得コントローラーを作成します。

まずはモデルから、モデルの作成は以下のコマンドで一発で作成できます。
Windows Power Shellに入力してください。

上記のようにsuccessfullyという文言が出てくればおkです。
作成したファイルの中身は弄りませんが、「app/Models」配下にモデルファイルがあるのは確認しておいてください。
続いてコントローラーを作成します。こちらもコマンドで作成。

上記コマンドを打つと「app/Http/Controllers/Api」配下にコントローラーファイルが作成されます。
それを開いて中身を編集しましょう。
以下のように、データベースのデータを取得するようにします。

ScheduleController.php
続いてルーティング情報も編集します。
編集するファイルは「routes/api.php」です。

api.php
末尾にルーティング情報を追加してください。
これでURLの末尾にpostsを付与すると、データが取得できるようになりました。
きちんとデータが取れるかどうかを、Postmanで確認してみましょう。

URLは「http://localhost/api/posts」です。

ブラウザ上でちゃんとデータが取得できることが分かりましたね。
あとはこのデータを表示するようにReactを調節するだけです。

スケジュールを表示しよう!

さて、それではExample.jsを編集していきましょう。
まずは1行目付近のimport周りを修正します。

Example.js
useEffectと、データ取得用のanxiosをインポートしています。
続いて、「onClick = n => ()」の下あたりにスケジュール追加のロジックを追加します。
useEffectは何度も読み込むのを阻止するために使用しています。
バックエンドからデータを取得するのは、anxiosの役割です。
返ってきたデータは「setSche」で「schedules」に格納しています。

「schedules」はデータを格納した配列です。
そのためからの配列「rows」を準備して、その中にmap関数で「schedules」の中身を移しています。
この段階で画面表示を試してみましょう。

jsファイルを変更したので、以下のコマンドでビルドしてください。

画面を表示して、F12で開発ツールを起動しましょう。
コンソールのところで、データが取得しているのを確認できればOKです。

ちゃんと取得できていますね。
あとは配列「rows」の中身をカレンダー上に表示するだけです。
こちらも「Example.js」ファイルを編集します。

上部分のdayのところはカレンダーの日付の表示部分ですね。
前回はその下にschedule-areaを作りましたが、その中は空でした。

今回はその中にスケジュールを表示する処理を追加しています。
全部のスケジュールを確認し、年度、月、日付が同じならば表示するという簡単なものです。
ただし、monthとdayはデータベースの表記通り、0埋めをする必要があります。
そのために、最後に「createCalendear」関数の下に「zeroPadding」という関数を作成します。

これでビルドをすればスケジュールの内容が正しく表示されるはずです。

無事スケジュールが表示されましたね。
ここまで実装で来たら、SourceTreeでコミットしておきましょう。
さて、今回はここまで。次はスケジュールの登録機能を実装していきましょう。
ここまでのExample.jsのソースを下の折り畳みの中に記載しておきますね。

クリックでExample.jsの全ソース表示
Laravel×Reactでつくるスケジュールアプリ
環境構築 Git、Reactの導入
カレンダー表示 スケジュール表示 
スケジュール登録 スケジュール更新
スケジュール削除 関数化Ⅰ
関数化Ⅱ