React Nativeのドロップダウン:ライブラリあり・なし

React Nativeドロップダウンガイド

React Nativeのドロップダウン:Modal + FlatListで作る | We.Inc

ModalとFlatListを使ってライブラリなしでReact Nativeのドロップダウンを作るか、コミュニティ版のPickerを使う方法を解説します。コピーできるコード、ライブのWebプレビュー、props表付きです。

React Nativeのコアコンポーネントには、ドロップダウンやセレクトがありません。Pressableのトリガー、Modal、選択肢のFlatListを組み合わせて自作するか、AndroidとiOSのネイティブピッカーをラップするコミュニティパッケージ@react-native-picker/pickerをインストールします。検索、独自の行デザイン、全プラットフォームで同じ見た目が必要なら自作しましょう。

選択肢の一覧を表示する3つの方法

下のプレビューは、後半のReact Nativeコードと同じロジックをWeb要素で描画したもので、ここで試せます。リストを開き、絞り込み、行を選び、Escapeで閉じてみてください。その後、コンポーネントをコピーし、WebのタグをView、Text、Pressable、Modal、FlatListに置き換えます。

よくある質問

React Nativeに組み込みのドロップダウンはありますか?

ありません。コアコンポーネントのページには、ユーザーインターフェースのコントロールとしてButtonとSwitchが載っているだけで、セレクトはありません。既製のネイティブセレクトが必要なら、コミュニティパッケージ@react-native-picker/pickerをインストールしてください。

AndroidでPickerをドロップダウンのように見せるには?

Pickerにmode="dropdown"を設定します。このpropはAndroid専用で、デフォルトはモーダルのリストを開く"dialog"です。iOSでは、代わりにネイティブのホイールが表示されます。

選択肢をタップしてもキーボードが閉じるだけなのはなぜですか?

スクロールするリストではkeyboardShouldPersistTapsのデフォルトが"never"のため、フォーカス中の入力欄の外を最初にタップするとキーボードが閉じるだけで、行にはタップが届きません。FlatListでこのpropを"handled"に設定してください。

React Nativeのドロップダウンに検索を追加できますか?

はい、自作版なら可能です。stateに検索文字列を持ち、Modalの上部にTextInputを置き、絞り込んだ配列をFlatListのdata propに渡します。

自作すべきとき

自作セレクトのアクセシビリティ

ドロップダウンで重要なprops

自作ドロップダウンで使うコアのprops

コピーして使えるドロップダウンのコード

Pressable、Modal、FlatListで作るドロップダウン

依存関係はありません。値は親が持ち、コンポーネントはonChangeで選択を伝えるだけです。

コミュニティ版のPicker

npm install @react-native-picker/pickerでインストールします。onValueChangeは項目の値とその位置を受け取ります。

ドロップダウンのプレビュー

React NativeコンポーネントのWeb版代用品です。開く、絞り込む、選ぶという同じロジックをHTMLで描画し、ここで動くようにしています。

都市

選択してください...

都市を絞り込む

その条件に一致する都市はありません。

リストを閉じる

選択した値:{v}

まだ何も選択されていません。

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る