VideoDetailScreenにはフォーカス可能なボタンを2つ追加する必要があるため、独自のボタンコンポーネントを作成します。これにより、コードの重複がなくなり、ボタンをアプリ全体で再利用できます。
Buttonコンポーネントの定義
-
componentsフォルダに
Button.tsxという新しいファイルを作成します。 - 「react」からReactとuseStateをインポートします。
- 「react-native」からStyleSheet、Text、TouchableOpacityをインポートします。
-
pressFunctionとbuttonTextという2つの引数を取るButtonというアロー関数を作成します。 -
インターフェイスの各引数を分割し、
:IPropsを追加してオブジェクトの各引数に型を適用します。pressFunctionは関数になり、buttonTextは文字列になります。 -
importステートメントの下に、プロパティの型を宣言するインターフェイスを作成します。
- 空のフラグメントを追加し、その中にTouchableOpacity要素を追加します。
- onPressプロパティをTouchableOpacityに追加し、pressFunctionを呼び出すようにその値を設定します。
- TouchableOpacity内にTextコンポーネントを追加し、buttonTextの値を取り込むように設定します。
onFocus()プロパティとonBlur()プロパティを追加しましょう。
- reactから
useStateをインポートし、focusedの状態とsetFocusedの関数で初期化します。 focusedの値をfalseに初期化します。
- TouchableOpacityに
onFocusプロパティを追加し、値をtrueにしてsetFocused()関数を呼び出すように設定します。 - TouchableOpacityに
onBlurプロパティを追加し、値をfalseにしてsetFocused()関数を呼び出すように設定します。
スタイルの追加
次に、スタイルを追加しましょう。- stylesというStyleSheetを作成し、Button関数の後に追加します。
- 次の値で
buttonContainer、buttonText、focusedの各スタイルをStyleSheetに追加します。
- TouchableOpacityにbuttonInnerContainerのスタイルプロパティとfocusedの条件付きスタイルプロパティを指定します。
- ViewコンポーネントにbuttonOuterContainerスタイルを追加します。

