Ich lasse dies aus historischen Gründen hier. Eine viel bessere Lösung finden Sie in meinen Änderungen unten, nachdem
ich eine Weile in Reaktion entwickelt habe. Am Ende habe ich eine NgIf-Komponente erstellt (dies ist reaktionsnativ, funktioniert aber wahrscheinlich für Reaktion).
Code:
import React, {Component} from "react";
class NgIf extends Component {
render() {
if (this.props.show) {
return (
this.props.children
);
} else {
return null
}
}
}
export default NgIf;
Verwendung:
...
import NgIf from "./path/to/component"
...
class MyClass {
render(){
<NgIf show={this.props.show}><Text>This Gets Displayed</Text></NgIf>
}
}
Ich bin neu in diesem Bereich, kann also wahrscheinlich verbessert werden, hilft mir aber bei meinem Übergang von Angular
BEARBEITEN
Weitere Informationen finden Sie in den Änderungen unten, sobald ich mehr Erfahrung habe
Dank Jays Kommentar unten ist eine großartige Idee auch:
render() {
<View>{this.props.value ? <Text>Yes</Text> : <Text>No</Text>}</View>
}
ODER
render() {
<View>{this.props.value && <Text>Yes</Text>}</View>
}
Ähnlich wie bei einigen anderen Antworten, funktioniert jedoch inline, anstatt den gesamten Renderblock / die gesamte Renderfunktion zu verwenden, ist keine spezielle Komponente erforderlich, und Sie können eine else-Anweisung mit dem ternären Operator verwenden. Plus-Elemente in der if-Anweisung geben keinen Fehler aus, wenn das übergeordnete Objekt nicht vorhanden ist. Dh wenn wenn props.valuenicht existiert, dannprops.value.value2 wird kein Fehler ausgegeben.
Siehe diese Antwort https://stackoverflow.com/a/26152067
EDIT 2:
Gemäß dem obigen Link ( https://stackoverflow.com/a/26152067 ) und nach viel mehr Erfahrung bei der Entwicklung von Reaktions-Apps ist dies nicht der beste Weg, um Dinge zu tun.
Bedingte Operatoren, die reagieren, sind tatsächlich sehr einfach, sich zurechtzufinden. Es gibt zwei Möglichkeiten, Dinge zu tun:
{someItem && displayThis}
{someItem ? displayThisIfTrue : displayThisIfFalse}
Eine Einschränkung, die Sie möglicherweise treffen, ist, wenn "someItem" kein boolescher Ausdruck ist. Wenn Sie sagen, dass 0 "Reagieren" eine 0 druckt oder "Native reagieren", wird eine Fehlermeldung angezeigt, dass "0" in ein Textelement eingeschlossen werden muss. Dies ist normalerweise kein Problem für falsche Tests, stellt jedoch ein Problem für wahrheitsgemäße Tests dar. Zum Beispiel:
{!someItem && displayThis}
{someItem && displayThis}
Mein oft benutzter Trick? Doppel-Negative.
{!!someItem && displayThis}
Beachten Sie, dass dies nicht für ternäre Operatoren (myVar? True: false) gilt, da das Ergebnis implizit in einen booleschen Ausdruck konvertiert wird.