ReactNativeでの条件付きレンダリング

Sep 10 2020

私はネイティブとコーディング全般に反応するのはかなり新しいです。いくつかの変数に基づいてテキストをレンダリングする必要があります(以下を参照)。

の場合isPlayer === true && base.length === 1、xをレンダリングします

それ以外の場合isPlayer === true && base.length > 1は、yをレンダリングします

それ以外の場合はzをレンダリングします

以下は私が取り組んでいるコードのスニペットであり、テキストをレンダリングする必要がある場所にマークを付けています。if / elseロジックを使用して関数を記述してから関数を呼び出しようとしましたが、機能しませんでした。JSXを使用すると、条件付きレンダリングをインラインで実行できることはわかっていますが、それを機能させることもできませんでした。ありとあらゆる助けに感謝します!前もって感謝します!

<View style={{ marginTop: marginTopAdj, flexDirection: 'row' }}>
          <TouchableOpacity onPress={() => navigation.goBack()} style={{}}>
            {IconWhiteBackButton}
          </TouchableOpacity>

          <HeaderTitle
            containerStyle={styles.headerTitleContainer}
            textStyle={{ color: '#fff' }}
          >
            {Item to be conditionally rendered}
          </HeaderTitle>
</View>

回答

1 TobiasWälde Sep 10 2020 at 05:16
<View style={{ marginTop: marginTopAdj, flexDirection: 'row' }}>
          <TouchableOpacity onPress={() => navigation.goBack()} style={{}}>
            {IconWhiteBackButton}
          </TouchableOpacity>

          <HeaderTitle
            containerStyle={styles.headerTitleContainer}
            textStyle={{ color: '#fff' }}
          >
            {isPlayer === true && base.length === 1 && <ItemX/>}
            {isPlayer === true && base.length > 1 && <ItemY/>}
          </HeaderTitle>
</View>

より複雑なロジックの場合は、新しい関数を作成します。

renderItemConditionally = () => {
  if (...) return <ItemX/>;
  else if (...) return <ItemY/>;
  else return <ItemZ/>;
}

詳細については、これをお読みください。