コンポーネントのスタイルプロパティを入力して配列を受け入れるにはどうすればよいですか?

ロビーMilejczak

React Nativeでは、ビュー要素styleはキャメルケース付きオブジェクトでCSSプロパティ名を使用するプロパティを受け入れます。

const styleObj = {
  width: 200,
  marginTop: 10
}

要素は、次のようなスタイルオブジェクトの配列も受け入れます。

<MyComponent style={[ styleObj, styleProp && styleProp ]} />

共有ベースボタンインターフェイスに依存する抽象化されたボタンコンポーネントがいくつかあります。簡単にするために:

interface IButton {
  style?: ViewStyle | ViewStyle[] // <-- ViewStyle is exported by react native, and contains all the allowed style properties for a View component
}

この定義で十分だと思いましたが、理解しにくい問題がいくつかあります。

DropDownレンダリングするコンポーネントがありますButtonスタイルプロップを使用すると、エラーが発生します。

<Button
  style={[
    {
      backgroundColor: backgroundColor || COLORS.lightRed,
      borderRadius: 3,
      height: 44,
      width: '100%',
     },
     style && style, // <-- type is ViewStyle | ViewStyle[], this is passed in as a prop
  ]}

上記はエラーをスローします:

Type (ViewStyle | ViewStyle[] | undefined)[] is not assignable to ViewStyle | ViewStyle[] | undefined

スタイルをキャストした場合:style && (style as ViewStyle)別のエラーが発生します:

Type (ViewStyle | undefined)[] is not assignable to ViewStyle[]

配列全体をキャストするとViewStyle、エラーがクリアされます。

<Button
  style={[
    {
      backgroundColor: backgroundColor || COLORS.lightRed,
      borderRadius: 3,
      height: 44,
      width: '100%',
     },
     style && style,
  ] as ViewStyle}

これは問題ありませんが、少し混乱しています。私のコンポーネントは同じ小道具インターフェースを使用しているので、TypeScriptが混乱しているという予感があります。最終的に、これらのエラーが発生している理由と、キャストに依存する必要があるという私の定義の何が間違っているのかがわかりません。

ロビーMilejczak

当然のことながら、最善の解決策を見つけるのに少し時間がかかりました。

スタイルの小道具を入力するときはViewStyleTextStyle(の代わりにStyleProp<T>などを使用しスタイルの配列を渡すときはStylesheet.flatten()、タイプの非互換性を消すために使用ます

<Button
  style={Stylesheet.flatten([
    {
      backgroundColor: backgroundColor || COLORS.lightRed,
      borderRadius: 3,
      height: 44,
      width: '100%',
     },
     style && style,
  ])}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

入力コンポーネントの配列からの入力値を使用して配列を作成するにはどうすればよいですか?

分類Dev

タイプスクリプトの関数パラメーターとしてreactコンポーネントコンストラクターを受け入れるにはどうすればよいですか?

分類Dev

別のコンポーネントを小道具として受け入れるReactコンポーネント、およびそのコンポーネントのすべての小道具を入力するにはどうすればよいですか?

分類Dev

パラメータとして色を受け入れるReactコンポーネントを作成するにはどうすればよいですか?

分類Dev

Typescript React、カスタム入力コンポーネントを小道具として受け取るコンポーネントの型情報を提供するにはどうすればよいですか?

分類Dev

Talend tDBBulkExecコンポーネントにテキストエンクロージャーを受け入れるにはどうすればよいですか?

分類Dev

コマンドラインFFMPEGを実行して、最初の入力をブロックせずに複数のパイプ(ビデオとオーディオ)を受け入れるにはどうすればよいですか?

分類Dev

typeidを使用して入力イテレータのみを受け入れるようにコンストラクタを実装するにはどうすればよいですか?

分類Dev

カスタム入力コンポーネントから親コンポーネントの配列に入力値をプッシュするにはどうすればよいですか?

分類Dev

PowerShellコマンドレットパラメーターがValueFromPipelineByPropertyNameを受け入れ、エイリアスがある場合、元のプロパティ名を取得するにはどうすればよいですか?

分類Dev

bashプロンプトに入力されているコマンドのスタイルを設定するにはどうすればよいですか?

分類Dev

HANAストアドプロシージャの入力パラメータのフィールドを使用して、execute_immediateステートメントのテーブル名を動的に生成するにはどうすればよいですか?

分類Dev

エンティティタイプの選択フィールドに、Symfonyフォームのプロトタイプによって生成された新しい要素を入力するにはどうすればよいですか?

分類Dev

入力テキストが変更されたときにvue.jsでコンポーネントのプロパティを使用するにはどうすればよいですか?

分類Dev

配列の配列を入力として受け取るこの関数をnumbaでコンパイルするにはどうすればよいですか?

分類Dev

Typescriptのオブジェクト配列をforEachループのプロパティでフィルタリングし、小道具を含むコンポーネントを返すにはどうすればよいですか?

分類Dev

ネストされた配列のリーフノードにプロパティを挿入するにはどうすればよいですか?

分類Dev

複数の入力を受け入れるGoogleスクリプトプロンプトを作成するにはどうすればよいですか

分類Dev

入力プロパティとして角度コンポーネントに渡されたメソッドを再実行するにはどうすればよいですか?

分類Dev

Google Analytics Webコンポーネントを使用して、すべてのプロパティIDを取得するにはどうすればよいですか。

分類Dev

FlowのHOCにネストされているコンポーネントの小道具を入力するにはどうすればよいですか?

分類Dev

テキストを入力しているときにテキストエディットコントロールの色を変更し、入力が完了したら色を再度変更するにはどうすればよいですか?

分類Dev

(一般的に)コントロールを受け入れて、Textプロパティがある場合はそれを設定するにはどうすればよいですか?

分類Dev

配列コンポーネントにアクセスしてVueでスタイルを変更するにはどうすればよいですか?

分類Dev

誤ったタイプのパス変数パスをURLで受け入れないようにSpringコントローラーを保護するにはどうすればよいですか?

分類Dev

新しいコンポジションAPIで計算されたプロパティを入力するにはどうすればよいですか?

分類Dev

1X1ニューロンを入力として受け取り、それを定数NXN行列で乗算するカスタム深層学習レイヤーの勾配を計算するにはどうすればよいですか?

分類Dev

テキストコントローラーの入力をdoubleとして取得するにはどうすればよいですか?-フラッター

分類Dev

オブジェクトの配列を最初の引数として受け取り、オブジェクトに期待される特定のプロパティを引数として受け取るtypescript関数を入力するにはどうすればよいですか?

Related 関連記事

  1. 1

    入力コンポーネントの配列からの入力値を使用して配列を作成するにはどうすればよいですか?

  2. 2

    タイプスクリプトの関数パラメーターとしてreactコンポーネントコンストラクターを受け入れるにはどうすればよいですか?

  3. 3

    別のコンポーネントを小道具として受け入れるReactコンポーネント、およびそのコンポーネントのすべての小道具を入力するにはどうすればよいですか?

  4. 4

    パラメータとして色を受け入れるReactコンポーネントを作成するにはどうすればよいですか?

  5. 5

    Typescript React、カスタム入力コンポーネントを小道具として受け取るコンポーネントの型情報を提供するにはどうすればよいですか?

  6. 6

    Talend tDBBulkExecコンポーネントにテキストエンクロージャーを受け入れるにはどうすればよいですか?

  7. 7

    コマンドラインFFMPEGを実行して、最初の入力をブロックせずに複数のパイプ(ビデオとオーディオ)を受け入れるにはどうすればよいですか?

  8. 8

    typeidを使用して入力イテレータのみを受け入れるようにコンストラクタを実装するにはどうすればよいですか?

  9. 9

    カスタム入力コンポーネントから親コンポーネントの配列に入力値をプッシュするにはどうすればよいですか?

  10. 10

    PowerShellコマンドレットパラメーターがValueFromPipelineByPropertyNameを受け入れ、エイリアスがある場合、元のプロパティ名を取得するにはどうすればよいですか?

  11. 11

    bashプロンプトに入力されているコマンドのスタイルを設定するにはどうすればよいですか?

  12. 12

    HANAストアドプロシージャの入力パラメータのフィールドを使用して、execute_immediateステートメントのテーブル名を動的に生成するにはどうすればよいですか?

  13. 13

    エンティティタイプの選択フィールドに、Symfonyフォームのプロトタイプによって生成された新しい要素を入力するにはどうすればよいですか?

  14. 14

    入力テキストが変更されたときにvue.jsでコンポーネントのプロパティを使用するにはどうすればよいですか?

  15. 15

    配列の配列を入力として受け取るこの関数をnumbaでコンパイルするにはどうすればよいですか?

  16. 16

    Typescriptのオブジェクト配列をforEachループのプロパティでフィルタリングし、小道具を含むコンポーネントを返すにはどうすればよいですか?

  17. 17

    ネストされた配列のリーフノードにプロパティを挿入するにはどうすればよいですか?

  18. 18

    複数の入力を受け入れるGoogleスクリプトプロンプトを作成するにはどうすればよいですか

  19. 19

    入力プロパティとして角度コンポーネントに渡されたメソッドを再実行するにはどうすればよいですか?

  20. 20

    Google Analytics Webコンポーネントを使用して、すべてのプロパティIDを取得するにはどうすればよいですか。

  21. 21

    FlowのHOCにネストされているコンポーネントの小道具を入力するにはどうすればよいですか?

  22. 22

    テキストを入力しているときにテキストエディットコントロールの色を変更し、入力が完了したら色を再度変更するにはどうすればよいですか?

  23. 23

    (一般的に)コントロールを受け入れて、Textプロパティがある場合はそれを設定するにはどうすればよいですか?

  24. 24

    配列コンポーネントにアクセスしてVueでスタイルを変更するにはどうすればよいですか?

  25. 25

    誤ったタイプのパス変数パスをURLで受け入れないようにSpringコントローラーを保護するにはどうすればよいですか?

  26. 26

    新しいコンポジションAPIで計算されたプロパティを入力するにはどうすればよいですか?

  27. 27

    1X1ニューロンを入力として受け取り、それを定数NXN行列で乗算するカスタム深層学習レイヤーの勾配を計算するにはどうすればよいですか?

  28. 28

    テキストコントローラーの入力をdoubleとして取得するにはどうすればよいですか?-フラッター

  29. 29

    オブジェクトの配列を最初の引数として受け取り、オブジェクトに期待される特定のプロパティを引数として受け取るtypescript関数を入力するにはどうすればよいですか?

ホットタグ

アーカイブ