Reactで確認ダイアログ(confirm)を表示させる3つの方法

react-confirm-dialog
  • URLをコピーしました!

ある画面でボタンを押した時や、現在のページから離脱する場合に「本当によろしいですか?」みたいなアラート警告)表示をよく見かけることがあると思います。
今回は、そんな確認ダイアログReactで表示させる方法をご紹介します!

React確認ダイアログを作成する方法はいくつかありますが、基本的なものから、react-confirm-alertというライブラリを使った方法、それからMaterial UIMUI)のDialogコンポーネントを使った方法をご紹介します。

目次

onBeforeunloadイベント

Reactでは、onBeforeunloadイベントwindowオブジェクトに登録することで、ページを離れる前にカスタムメッセージや確認ダイアログを表示することができます。

onBeforeunloadイベントで確認ダイアログを表示

例えば、以下のようなコードでonBeforeunloadイベントを登録してみましょう。

【余談】window.confirmも使える

もちろんですが、Reactと言えどベースはJavaScriptなので、Reactでも以下のようにJavaScript標準のwindow.confirmを使った確認ダイアログは表示できます。

しかし、カスタマイズ性が低いという欠点があります。
もし、より柔軟に確認ダイアログを表示したい場合は、自作するか、ライブラリを利用することをおすすめします。

react-confirm-alertライブラリ

例えば、react-confirm-alertというライブラリは、window.confirmのように簡単に使えるだけでなく、スタイルやコールバックも設定できます。
react-confirm-alertは以下のような手順で使うことができます。

react-confirm-alertのインストールと設定

まず、react-confirm-alertインストールします。

次に、react-confirm-alertとそのスタイルシートをインポートします。

確認ダイアログを表示する関数を作成

そして、確認ダイアログを表示する関数を作ります。
この関数では、confirmAlertメソッドにオプションオブジェクトを渡します。
オプションオブジェクトには、titlemessagebuttonsなどのプロパティがあります。
buttonsはラベルとonClickイベントハンドラーを持つオブジェクトの配列です。

ボタン表示コンポーネント作成

最後に、この関数を呼び出すボタンをレンダリングするコンポーネントを作ります。

これでreact-confirm-alert確認ダイアログが作成できました。
比較的簡単に確認ダイアログができますので、ぜひ試してみてください!

Material UI(MUI)のDialogコンポーネント

最後は、Reactと共によく使われるMaterial UIMUI)のDialogコンポーネントを使って、確認ダイアログを作成する方法を紹介します。

Dialogコンポーネントは、アプリのコンテンツの前に表示されるモーダルウィンドウの一種で、重要な情報や決定を求めるときに使います。
Dialogコンポーネントは表示されるとアプリの機能を無効にし、確認やキャンセルなどの必要なアクションが取られるまで画面に残ります。

Dialogコンポーネントは意図的に処理を中断するので、必要最小限に使用するべきです

Material UI(MUI)のインストールと設定

Dialogコンポーネントを使うには、まずMaterial UIMUI)をインストールします。

次に、Dialogコンポーネントとその関連コンポーネント(DialogTitle、DialogContent、DialogContentText、DialogActions)も一緒にインポートします。

Dialogコンポーネントで確認ダイアログ作成

そして、Dialogコンポーネントをレンダリングする関数を作ります。
この関数では、openというステート変数とそれを更新するsetOpenという関数useStateフックで定義します。
open確認ダイアログが開いているかどうかを表す真偽値です。
setOpenはボタンのonClickイベントハンドラーで呼び出してopenの値を変更します。

React確認ダイアログを作成する方法は以上です。
Reactは世界的によく使われるライブラリなだけあって、やりたいことはほぼ何でもできますね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次