スワイプ可能なモーダル機能を実装する【ReactNative】


本記事では、モーダル機能をReactNativeで実装する方法について紹介します。

ReactNativeでは、モーダル機能を実装することができるコンポーネントは2つあります。

1. ReactNativeライブラリ
2. react-native-modalライブラリ

の2種類です。

今回紹介するのは、 react-native-modalライブラリを使ったモーダルについて紹介します。

本記事を読むことで、以下のようなアプリを実装することができます。

1. react-native-modalライブラリとは?

react-native-modalライブラリは、 ReactNativeライブラリのModalコンポーネントを元に作られているModalコンポーネントです。

その為、元のModalコンポーネントの機能に加えて、

「アニメーションや色などのカスタマイズが可能であったり、スワイプでモーダルを閉じる機能などが追加されたライブラリ」

となっています。

2. ライブラリのインストール

以下のコマンドを実行して”react-native-modal”ライブラリをインストールします。



3. コンポーネントをインポート

“react-native-modal”ライブラリのModalコンポーネントをインポートします。

4. Moadalコンポーネントの使い方

基本的な使い方は、Modalコンポーネントの isVisible プロパティの値を切り替えることで、モーダルを表示/非表示にすることができます。

isVisible プロパティの値はbool値で設定し、
「trueの時はモーダルを表示」、
「falseの時はモーダルを非表示」
になります。

この値は、stateで値を管理すると切り替えやすいです。

<Modal></Modal>で囲われた箇所がモーダル(別ウィンドウ)として、画面上に表示されます。



4.1 サンプルコード

動画のサンプルコードです

4.2 Modalコンポーネントのプロパティ

Moadalコンポーネントに設定することができるプロパティについて一部紹介します。

名前 デフォルト値 説明
isVisible モーダルの表示の有無。このプロパティをON,OFFすることで
モーダルの表示の切り替えができる
backdropOpacity 0.7 モーダルが表示されているときの背景の不透明度。
0(透明)〜1(黒)の値を設定。
swipeDirection null モーダルをスワイプできる方向を定義する。
「up」、「down」、「left」、「right」、複数定義したい時は、
配列で定義する[‘up’,’down’]
onSwipeComplete null swipeThresholdで設定した閾値を超えた時に発生する処理。
本プログラムでは、モーダルを閉じる処理を設定。
swipeThreshold 100 スワイプ有効判定の閾値。onSwipeCompleteと組み合わせて使う
animationIn slideInUp モーダルが表示される時のアニメーション
animationOut slideOutDown モーダルが非表示になる時のアニメーション
animationInTiming 300 非表示→表示時のアニメーションの速度(ms)
animationOutTiming 300 表示→非表示時のアニメーションの速度(ms)


もっと詳しく知りたいと言う方は、以下のGitHubのサイトを参考にしてください。

react-native-modalライブラリ



5. まとめ

今回は、react-native-modalライブラリのModalコンポーネントについて紹介しました。
本ライブラリは、「スワイプでモーダルを閉じることができたり」、「アニメーションのカスタマイズできる」ので、モーダルを実装するならオススメのライブラリです。