メインコンテンツへスキップ

View

UIを構築するための最も基本的なコンポーネントである View は、flexbox によるレイアウト、styleいくつかのタッチハンドリングアクセシビリティコントロールをサポートするコンテナです。View は、React Nativeが実行されているプラットフォーム上のネイティブビュー(それが UIView<div>android.view などであれ)に直接マッピングされます。

View は他のビューの内部にネストされるように設計されており、0個から多数の任意の子要素を持つことができます。

この例では、色付きの2つのボックスとテキストコンポーネントを、パディング付きで行に並べてラップする View を作成します。

View は、インラインスタイルもサポートされていますが、明瞭さとパフォーマンスのために StyleSheet と一緒に使用するように設計されています。

合成タッチイベント (Synthetic Touch Events)

View のレスポンダープロップ(例: onResponderMove)に対して渡される合成タッチイベントは、PressEvent の形式です。


リファレンス

Props


accessibilityActions

アクセシビリティアクションを使用すると、支援技術がコンポーネントのアクションをプログラムで呼び出すことができます。accessibilityActionsプロパティには、アクションオブジェクトのリストを含める必要があります。各アクションオブジェクトには、フィールド名とラベルを含める必要があります。

詳細はアクセシビリティガイドを参照してください。

array

accessibilityElementsHidden
iOS

このアクセシビリティ要素内に含まれるアクセシビリティ要素が非表示であるかどうかを示す値です。デフォルトは false です。

詳細については、アクセシビリティガイドを参照してください。

bool

accessibilityHint

アクセシビリティヒントは、アクセシビリティラベルから結果が明確でない場合に、ユーザーがアクセシビリティ要素に対してアクションを実行したときに何が起こるかを理解するのに役立ちます。

string

accessibilityLanguage
iOS

ユーザーが要素を操作する際にスクリーンリーダーが使用すべき言語を示す値です。BCP 47仕様に従う必要があります。

詳細はiOSの `accessibilityLanguage` ドキュメントを参照してください。

string

accessibilityIgnoresInvertColors
iOS

色の反転がオンになったときに、このビューを反転すべきかどうかを示す値です。値が true の場合、色の反転がオンであってもビューは反転されません。

詳細については、アクセシビリティガイドを参照してください。

bool

accessibilityLabel

ユーザーが要素を操作したときにスクリーンリーダーによって読み上げられるテキストを上書きします。デフォルトでは、ラベルはすべての子を走査し、すべてのTextノードをスペースで区切って蓄積することによって構築されます。

string

accessibilityLiveRegion
Android

このビューが変更されたときにユーザーに通知すべきかどうかをアクセシビリティサービスに示します。Android API 19以上でのみ動作します。指定可能な値:

  • 'none' - アクセシビリティサービスはこのビューの変更をアナウンスすべきではありません。
  • 'polite'- アクセシビリティサービスはこのビューの変更をアナウンスすべきです。
  • 'assertive' - アクセシビリティサービスは進行中の音声を中断して、このビューの変更を直ちにアナウンスすべきです。

参考として、Androidの View ドキュメントを参照してください。

enum('none', 'polite', 'assertive')

accessibilityRole

accessibilityRole は、コンポーネントの目的を支援技術のユーザーに伝えます。

accessibilityRole は以下のいずれかになります:

  • 'none' - 要素に役割がない場合に使用されます。
  • 'button' - 要素がボタンとして扱われるべき場合に使用されます。
  • 'link' - 要素がリンクとして扱われるべき場合に使用されます。
  • 'search' - テキストフィールド要素が検索フィールドとしても扱われるべき場合に使用されます。
  • 'image' - 要素が画像として扱われるべき場合に使用されます。例えば、buttonやlinkと組み合わせることができます。
  • 'keyboardkey' - 要素がキーボードのキーとして機能する場合に使用されます。
  • 'text' - 要素が変更不可能な静的テキストとして扱われるべき場合に使用されます。
  • 'adjustable' - 要素が「調整可能」な場合(例:スライダー)に使用されます。
  • 'imagebutton' - 要素がボタンとして扱われ、かつ画像でもある場合に使用されます。
  • 'header' - 要素がコンテンツセクションのヘッダーとして機能する場合(例:ナビゲーションバーのタイトル)に使用されます。
  • 'summary' - アプリが最初に起動したときに、アプリの現在の状況の簡単な要約を提供するために使用できる要素の場合に使用されます。
  • 'alert' - 要素がユーザーに提示されるべき重要なテキストを含む場合に使用されます。
  • 'checkbox' - 要素がチェック、未チェック、または混合状態のチェックボックスを表す場合に使用されます。
  • 'combobox' - 要素がコンボボックスを表し、ユーザーが複数の選択肢の中から選択できる場合に使用されます。
  • 'menu' - コンポーネントが選択肢のメニューである場合に使用されます。
  • 'menubar' - コンポーネントが複数のメニューのコンテナである場合に使用されます。
  • 'menuitem' - メニュー内の項目を表すために使用されます。
  • 'progressbar' - タスクの進行状況を示すコンポーネントを表すために使用されます。
  • 'radio' - ラジオボタンを表すために使用されます。
  • 'radiogroup' - ラジオボタンのグループを表すために使用されます。
  • 'scrollbar' - スクロールバーを表すために使用されます。
  • 'spinbutton' - 選択肢のリストを開くボタンを表すために使用されます。
  • 'switch' - オンとオフに切り替えられるスイッチを表すために使用されます。
  • 'tab' - タブを表すために使用されます。
  • 'tablist' - タブのリストを表すために使用されます。
  • 'timer' - タイマーを表すために使用されます。
  • 'toolbar' - ツールバー(アクションボタンやコンポーネントのコンテナ)を表すために使用されます。
  • 'grid' - ScrollView、VirtualizedList、FlatList、またはSectionListと共に使用してグリッドを表します。AndroidのGridViewにグリッド内外のアナウンスを追加します。
string

accessibilityState

コンポーネントの現在の状態を支援技術のユーザーに説明します。

詳細については、アクセシビリティガイドを参照してください。

object: {disabled: bool, selected: bool, checked: bool or 'mixed', busy: bool, expanded: bool}

accessibilityValue

コンポーネントの現在の値を表します。これはコンポーネントの値のテキスト説明である場合もあれば、スライダーやプログレスバーのような範囲ベースのコンポーネントの場合は範囲情報(最小値、現在値、最大値)を含みます。

詳細については、アクセシビリティガイドを参照してください。

object: {min: number, max: number, now: number, text: string}

accessibilityViewIsModal
iOS

VoiceOverがレシーバーの兄弟であるビュー内の要素を無視すべきかどうかを示す値です。デフォルトは false です。

詳細については、アクセシビリティガイドを参照してください。

bool

accessible

true の場合、ビューがアクセシビリティ要素であり、スクリーンリーダーやハードウェアキーボードなどの支援技術によって発見可能であることを示します。デフォルトでは、すべてのタッチ可能な要素はアクセス可能です。

詳細については、アクセシビリティガイドを参照してください。


aria-busy

要素が変更中であり、支援技術がユーザーに更新を通知する前に変更が完了するのを待つ可能性があることを示します。

デフォルト
booleanfalse

aria-checked

チェック可能な要素の状態を示します。このフィールドは、混合チェックボックスを表すためにブール値または「mixed」文字列のいずれかを取ることができます。

デフォルト
boolean, 'mixed'false

aria-disabled

要素が知覚可能であるが無効であり、編集またはその他の操作ができないことを示します。

デフォルト
booleanfalse

aria-expanded

展開可能な要素が現在展開されているか折りたたまれているかを示します。

デフォルト
booleanfalse

aria-hidden

このアクセシビリティ要素内に含まれるアクセシビリティ要素が非表示であるかどうかを示します。

例えば、兄弟ビュー AB を含むウィンドウで、ビュー Baria-hiddentrue に設定すると、VoiceOverはビュー B 内の要素を無視します。

デフォルト
booleanfalse

aria-label

インタラクティブな要素にラベルを付ける文字列値を定義します。

string

aria-labelledby
Android

適用される要素をラベル付けする要素を識別します。aria-labelledby の値は、関連する要素の nativeID と一致する必要があります。

tsx
<View>
<Text nativeID="formLabel">Label for Input Field</Text>
<TextInput aria-label="input" aria-labelledby="formLabel" />
</View>
string

aria-live
Android

要素が更新されることを示し、ユーザーエージェント、支援技術、およびユーザーがライブリージョンから期待できる更新の種類を記述します。

  • off アクセシビリティサービスはこのビューの変更をアナウンスすべきではありません。
  • polite アクセシビリティサービスはこのビューの変更をアナウンスすべきです。
  • assertive アクセシビリティサービスは進行中の音声を中断して、このビューの変更を直ちにアナウンスすべきです。
デフォルト
enum('assertive', 'off', 'polite')'off'

aria-modal
iOS

VoiceOverがレシーバーの兄弟であるビュー内の要素を無視すべきかどうかを示すブール値です。accessibilityViewIsModalプロパティよりも優先されます。

デフォルト
booleanfalse

aria-selected

選択可能な要素が現在選択されているかどうかを示します。

boolean

aria-valuemax

スライダーやプログレスバーなどの範囲ベースのコンポーネントの最大値を表します。accessibilityValueプロパティの max 値よりも優先されます。

number

aria-valuemin

スライダーやプログレスバーなどの範囲ベースのコンポーネントの最小値を表します。accessibilityValueプロパティの min 値よりも優先されます。

number

aria-valuenow

スライダーやプログレスバーなどの範囲ベースのコンポーネントの現在値を表します。accessibilityValueプロパティの now 値よりも優先されます。

number

aria-valuetext

コンポーネントのテキスト説明を表します。accessibilityValueプロパティの text 値よりも優先されます。

string

collapsable

子のレイアウトのみに使用されるか、何も描画しないビューは、最適化としてネイティブ階層から自動的に削除されることがあります。この最適化を無効にし、この View がネイティブビュー階層に存在することを保証するには、このプロパティを false に設定します。

デフォルト
booleantrue

collapsableChildren

false に設定すると、各子に collapsable={false} を設定するのと同様の効果で、ビューの直接の子がネイティブビュー階層から削除されるのを防ぎます。

デフォルト
booleantrue

focusable
Android

この View がタッチ以外の入力デバイス(例:ハードウェアキーボード)でフォーカス可能であるべきかどうか。

boolean

hitSlop

これは、タッチイベントがビューからどれだけ離れた場所から開始できるかを定義します。一般的なインターフェースガイドラインでは、少なくとも30〜40ポイント/密度非依存ピクセルのタッチターゲットを推奨しています。

例えば、タッチ可能なビューの高さが20の場合、hitSlop={{top: 10, bottom: 10, left: 0, right: 0}} を使用してタッチ可能な高さを40に拡張できます。

タッチエリアは親ビューの境界を超えることはなく、タッチが2つの重なり合うビューにヒットした場合、兄弟ビューのZインデックスが常に優先されます。

object: {top: number, left: number, bottom: number, right: number}

id

ネイティブクラスからこのビューを特定するために使用されます。nativeIDプロパティよりも優先されます。

これにより、このビューに対する「レイアウト専用ビューの削除」最適化が無効になります!

string

importantForAccessibility
Android

ビューがアクセシビリティイベントを発火するかどうか、画面をクエリするアクセシビリティサービスに報告されるかどうかという、アクセシビリティにとってビューがどれほど重要かを制御します。Android専用です。

可能な値

  • 'auto' - システムがビューがアクセシビリティにとって重要かどうかを決定します - デフォルト(推奨)。
  • 'yes' - ビューはアクセシビリティにとって重要です。
  • 'no' - ビューはアクセシビリティにとって重要ではありません。
  • 'no-hide-descendants' - ビューもその子孫ビューも、アクセシビリティにとって重要ではありません。

参考として、Androidの importantForAccessibility ドキュメントを参照してください。

enum('auto', 'yes', 'no', 'no-hide-descendants')

nativeID

ネイティブクラスからこのビューを特定するために使用されます。

これにより、このビューに対する「レイアウト専用ビューの削除」最適化が無効になります!

string

needsOffscreenAlphaCompositing

この View が、100%正確な色とブレンド動作を維持するために、オフスクリーンでレンダリングされ、アルファ値と合成される必要があるかどうか。デフォルト(false)では、コンポーネント全体をオフスクリーンでレンダリングしてアルファ値で合成する代わりに、各要素を描画するために使用されるペイントにアルファ値を適用してコンポーネントとその子を描画します。このデフォルトの動作は、不透明度を設定している View に複数の重なり合う要素がある場合(例:複数の重なり合う View、またはテキストと背景)に、目立って望ましくない結果になることがあります。

正確なアルファ動作を維持するためのオフスクリーンレンダリングは非常に高コストで、ネイティブ開発者以外にはデバッグが困難です。そのため、デフォルトではオンになっていません。アニメーションのためにこのプロパティを有効にする必要がある場合は、ビューのコンテンツが静的(つまり、各フレームで再描画する必要がない)であれば、renderToHardwareTextureAndroid と組み合わせることを検討してください。そのプロパティが有効になっている場合、このビューは一度オフスクリーンでレンダリングされ、ハードウェアテクスチャに保存された後、GPU上でレンダリングターゲットを切り替えることなく、各フレームでアルファ値と共に画面に合成されます。

bool

nextFocusDown
Android

ユーザーが下に移動したときに次にフォーカスを受け取るビューを指定します。Androidドキュメントを参照してください。

number

nextFocusForward
Android

ユーザーが前方に移動したときに次にフォーカスを受け取るビューを指定します。Androidドキュメントを参照してください。

number

nextFocusLeft
Android

ユーザーが左に移動したときに次にフォーカスを受け取るビューを指定します。Androidドキュメントを参照してください。

number

nextFocusRight
Android

ユーザーが右に移動したときに次にフォーカスを受け取るビューを指定します。Androidドキュメントを参照してください。

number

nextFocusUp
Android

ユーザーが上に移動したときに次にフォーカスを受け取るビューを指定します。Androidドキュメントを参照してください。

number

onAccessibilityAction

ユーザーがアクセシビリティアクションを実行したときに呼び出されます。この関数への唯一の引数は、実行するアクションの名前を含むイベントです。

詳細はアクセシビリティガイドを参照してください。

function

onAccessibilityEscape
iOS

accessibletrue の場合、ユーザーがエスケープジェスチャーを実行したときにシステムがこの関数を呼び出します。

function

onAccessibilityTap
iOS

accessible が true の場合、ユーザーがアクセシビリティタップジェスチャーを実行したときに、システムはこの関数の呼び出しを試みます。

function

onLayout

マウント時およびレイアウト変更時に呼び出されます。

このイベントはレイアウトが計算されるとすぐに発火しますが、特にレイアウトアニメーションが進行中の場合、イベントが受信された時点では新しいレイアウトが画面に反映されていない可能性があります。

({nativeEvent: LayoutEvent}) => void

onMagicTap
iOS

accessibletrue の場合、ユーザーがマジックタップジェスチャーを実行したときにシステムがこの関数を呼び出します。

function

onMoveShouldSetResponder

このビューはタッチ応答性を「要求」しますか?これは、ビューがレスポンダーでないときに、View 上のすべてのタッチムーブに対して呼び出されます。

({nativeEvent: PressEvent}) => boolean

onMoveShouldSetResponderCapture

View が子の View が移動時にレスポンダーになるのを防ぎたい場合、true を返すこのハンドラを持つべきです。

({nativeEvent: PressEvent}) => boolean

onResponderGrant

Viewがタッチイベントに応答するようになりました。これは、ユーザーに何が起こっているかをハイライトして表示するタイミングです。

Androidでは、このレスポンダーが終了するまで他のネイティブコンポーネントがレスポンダーになるのを防ぐために、このコールバックからtrueを返します。

({nativeEvent: PressEvent}) => void | boolean

onResponderMove

ユーザーが指を動かしています。

({nativeEvent: PressEvent}) => void

onResponderReject

別のレスポンダーがすでにアクティブで、レスポンダーになることを要求しているその View には解放しません。

({nativeEvent: PressEvent}) => void

onResponderRelease

タッチの終了時に発火します。

({nativeEvent: PressEvent}) => void

onResponderTerminate

レスポンダーが View から奪われました。onResponderTerminationRequest の呼び出し後に他のビューによって奪われるか、OSによって尋ねられることなく奪われる可能性があります(例:iOSのコントロールセンター/通知センターで発生します)。

({nativeEvent: PressEvent}) => void

onResponderTerminationRequest

他の View がレスポンダーになりたがっており、この View にレスポンダーを解放するよう求めています。true を返すと解放が許可されます。

({nativeEvent: PressEvent}) => void

onStartShouldSetResponder

このビューはタッチの開始時にレスポンダーになりたいですか?

({nativeEvent: PressEvent}) => boolean

onStartShouldSetResponderCapture

View が子の View がタッチ開始時にレスポンダーになるのを防ぎたい場合、true を返すこのハンドラを持つべきです。

({nativeEvent: PressEvent}) => boolean

pointerEvents

View がタッチイベントのターゲットになれるかどうかを制御します。

  • 'auto': Viewはタッチイベントのターゲットになれます。
  • 'none': Viewは決してタッチイベントのターゲットになりません。
  • 'box-none': Viewは決してタッチイベントのターゲットになりませんが、そのサブビューはなれます。これは、ビューがCSSで以下のクラスを持っているかのように動作します。
css
.box-none {
pointer-events: none;
}
.box-none * {
pointer-events: auto;
}
  • 'box-only': ビューはタッチイベントのターゲットになれますが、そのサブビューはなれません。これは、ビューがCSSで以下のクラスを持っているかのように動作します。
css
.box-only {
pointer-events: auto;
}
.box-only * {
pointer-events: none;
}
enum('box-none', 'none', 'box-only', 'auto')

removeClippedSubviews

これは RCTView によって公開されている予約済みのパフォーマンスプロパティで、多くのサブビューがあり、そのほとんどが画面外にあるコンテンツをスクロールする際に役立ちます。このプロパティが効果的であるためには、境界外に広がる多くのサブビューを含むビューに適用する必要があります。サブビューは overflow: hidden を持つ必要があり、含むビュー(またはそのスーパービューのいずれか)も同様です。

bool

renderToHardwareTextureAndroid
Android

この View が自身(およびすべての子)をGPU上の単一のハードウェアテクスチャにレンダリングすべきかどうか。

Androidでは、これは不透明度、回転、平行移動、および/またはスケールのみを変更するアニメーションやインタラクションに役立ちます。これらの場合、ビューを再描画する必要はなく、表示リストを再実行する必要もありません。テクスチャは異なるパラメータで再利用および再合成できます。欠点は、これが限られたビデオメモリを消費する可能性があるため、インタラクション/アニメーションの終了時にこのプロパティをfalseに戻す必要があることです。

bool

role

role はコンポーネントの目的を支援技術のユーザーに伝えます。accessibilityRole プロパティよりも優先されます。

Role

shouldRasterizeIOS
iOS

この View が合成前にビットマップとしてレンダリングされるべきかどうか。

iOSでは、このコンポーネントの寸法やその子を変更しないアニメーションやインタラクションに役立ちます。たとえば、静的なビューの位置を移動する場合、ラスタライズによりレンダラーは静的なビューのキャッシュされたビットマップを再利用し、各フレーム中に迅速に合成できます。

ラスタライズはオフスクリーン描画パスを発生させ、ビットマップはメモリを消費します。このプロパティを使用する際は、テストと測定を行ってください。

bool

style

View Style

tabIndex
Android

この View がタッチ以外の入力デバイス(例:ハードウェアキーボード)でフォーカス可能であるべきかどうか。以下の値をサポートします:

  • 0 - Viewはフォーカス可能です
  • -1 - Viewはフォーカス不可能です
enum(0, -1)

testID

E2Eテストでこのビューを特定するために使用されます。

これにより、このビューに対する「レイアウト専用ビューの削除」最適化が無効になります!

string