react-modal パッケージが提供する ReactModal
コンポーネントを使用すると、React アプリ内で簡単にモーダルダイアログを実現することができます。
上記は、設定
ボタンを押してモーダルな設定ダイアログを開いたときの表示例です。
react-modal のインストール
ReactModal
コンポーネントを使うために、react-modal
パッケージと TypeScript の型定義ファイルをインストールします。
ReactModal コンポーネントを使用する
ReactModal の使い方
ReactModal
コンポーネントは、isOpen
プロパティでダイアログの表示・非表示を制御するようになっています。
onAfterOpen
でオープン時、onRequestClose
でクローズ時のイベントをハンドルすることができます。
ReactModal
は自分自身のダイアログを自動で閉じたりしないので、onRequestClose
に設定したハンドラ内で、isOpen
プロパティに渡す値を false
に設定してダイアログを閉じる必要があります。
onRequestClose
ハンドラは、Esc
キーを押したときや、ダイアログ外の領域をクリックしたときなどに呼び出されます。
コンポーネントの作成
下記のサンプルコードは ReactModal
を使ったコンポーネントの作成例です。
ここでは、ユーザー名を入力可能な設定ダイアログを想定しています。
React を使ったフォームの作成方法などは次の記事を参照してください。
作成したコンポーネントを使用する
上記で作成した SettingsDialog
コンポーネントの使用例です。
設定
ボタンを押したときに、SettingsDialog
の isOpen
プロパティを true
に設定することでダイアログを表示しています。
設定値の保存と読み出し
ReactModal
コンポーネントの onAfterOpen
と onRequestClose
プロパティを設定しておくと、ダイアログを開いたときと閉じたときに任意の処理を行うことができます。
設定ダイアログのようなものを作るのであれば、このタイミングでフォームに入力した設定情報を保存・復旧させるとよいでしょう。
次の例では、Web ブラウザの localStorage
に設定情報を保存しています。
ここでは、簡易的な説明のため localStorage
を使用しましたが、localStorage
はセキュアではないとされているので、ユーザーの秘密情報をそのまま保存するのは避けてください。
他の保存手段としては、Web アプリであればサーバーサイドセッションを使う方法、Electron アプリであればローカルファイルに保存する方法(electron-store など)があります。
関連記事