私はこれを歴史的な目的のためにここに残しています。しばらくの間reactで開発した後、はるかに優れたソリューションについては、以下の編集を参照してください
(これはreactネイティブですが、おそらくreactで機能します)
コード:
import React, {Component} from "react";
class NgIf extends Component {
render() {
if (this.props.show) {
return (
this.props.children
);
} else {
return null
}
}
}
export default NgIf;
使用法:
...
import NgIf from "./path/to/component"
...
class MyClass {
render(){
<NgIf show={this.props.show}><Text>This Gets Displayed</Text></NgIf>
}
}
私はこれに慣れていないので、おそらく改善することができますが、Angularからの移行に役立ちます
編集
私がより多くの経験を積んだ後のより良い説明については、以下の編集を参照してください
以下のジェイのコメントのおかげで、素晴らしいアイデアもあります:
render() {
<View>{this.props.value ? <Text>Yes</Text> : <Text>No</Text>}</View>
}
または
render() {
<View>{this.props.value && <Text>Yes</Text>}</View>
}
他のいくつかの回答と同様ですが、レンダーブロック/関数全体を使用する代わりにインラインで機能し、特別なコンポーネントを必要とせず、三項演算子でelseステートメントを使用できます。さらに、ifステートメントに含まれるアイテムは、親オブジェクトが存在しない場合でもエラーをスローしません。つまり、props.value
存在しない場合、props.value.value2
エラーはスローされません。
この回答を参照してくださいhttps://stackoverflow.com/a/26152067
編集2:
上記のリンク(https://stackoverflow.com/a/26152067)のとおり、reactアプリの開発で多くの経験を積んだ後、上記の方法は最善の方法ではありません。
反応の条件付き演算子は、実際には非常に簡単に頭を動かすことができます。物事を行うには2つの方法があります。
{someItem && displayThis}
{someItem ? displayThisIfTrue : displayThisIfFalse}
「someItem」がブール式でない場合に発生する可能性のある注意点の1つです。0が0の場合、reactは0を出力するか、react nativeは、テキスト要素で「0」をラップする必要があるというエラーを表示します。これは通常、偽のテストでは問題になりませんが、真実のテストでは問題になります。例えば:
{!someItem && displayThis}
{someItem && displayThis}
私のよく使うトリック?二重否定。
{!!someItem && displayThis}
これは、結果をブール式に暗黙的に変換するため、三項演算子(myVar?true:false)には適用されないことに注意してください。