何を作るか?
GitHub や AWS などで、何らかのリソースを削除するときに、次のような確認ダイアログが表示されることがあります。
ユーザーは、削除対象のリソース名をタイピングするまで、削除ボタンを押すことができません。
これは、不用意にリソースを削除してしまわないための措置で、このようなダイアログは様々な場所で活用できます。
ここでは、MUI (Material-UI) で同様のリソース削除確認ダイアログ (AreYouSureDialog
) の実装例を紹介します。
コードをシンプルにするために、表示テキストをハードコーディングしていますが、props に切り出せば汎用的な確認ダイアログとして使えるはずです。
AreYouSureDialog を実装する
完成時のイメージはこんな感じです。
UI のベースは、MUI の Dialog コンポーネントです。
ダイアログコンポーネントの実装
props
の targetName
で渡されるテキストが、ユーザーに入力してもらうテキストになります。
ユーザーが入力エリアでタイピングするたびに handleInputChange
が呼び出され、入力内容が targetName
の値と等しくなったときに削除ボタンを有効化しています。
ダイアログを使う側のサンプルコード
上で実装した AreYouSureDialog
コンポーネントを使う側のサンプルコードです。
Next.js のページ (NextPage
) を想定していますが、React のコンポーネントであれば同様に実装できます。
ページ上に配置された Open Dialog
ボタンを押すと open
変数が true
にセットされ、ダイアログが表示されます。
ユーザーがダイアログを閉じると handleClose
が呼び出されます。
ここでは、結果を表示しているだけ(コードの★の部分)ですが、実際にはそこでリソースの削除処理などを行います。
関連記事