Zostawiam to tutaj ze względów historycznych, zobacz moje zmiany poniżej, aby uzyskać znacznie lepsze rozwiązanie po opracowaniu w reagowaniu przez chwilę
Skończyło się na utworzeniu komponentu NgIf (jest to natywne reagowanie, ale prawdopodobnie działa do reagowania)
Kod:
import React, {Component} from "react";
class NgIf extends Component {
render() {
if (this.props.show) {
return (
this.props.children
);
} else {
return null
}
}
}
export default NgIf;
Stosowanie:
...
import NgIf from "./path/to/component"
...
class MyClass {
render(){
<NgIf show={this.props.show}><Text>This Gets Displayed</Text></NgIf>
}
}
Jestem w tym nowy, więc prawdopodobnie można to poprawić, ale pomaga mi w przejściu z Angular
EDYTOWAĆ
Zobacz zmiany poniżej, aby uzyskać lepsze wyjaśnienie, gdy miałem więcej doświadczenia
Dzięki poniższemu komentarzowi Jaya świetnym pomysłem jest również:
render() {
<View>{this.props.value ? <Text>Yes</Text> : <Text>No</Text>}</View>
}
LUB
render() {
<View>{this.props.value && <Text>Yes</Text>}</View>
}
Podobnie jak w przypadku niektórych innych odpowiedzi, ale działa inline, zamiast używać całego bloku / funkcji renderowania, nie wymaga specjalnego komponentu i możesz użyć instrukcji else z operatorem trójskładnikowym. Elementy Plus zawarte w instrukcji if nie zgłaszają błędu, jeśli ich obiekt nadrzędny nie istnieje. To props.valueznaczy, jeśli nie istnieje, props.value.value2nie zgłosi błędu.
Zobacz tę odpowiedź https://stackoverflow.com/a/26152067
EDYCJA 2:
Zgodnie z powyższym linkiem ( https://stackoverflow.com/a/26152067 ) i po dużo większym doświadczeniu w tworzeniu aplikacji reagujących, powyższy sposób nie jest najlepszym sposobem robienia rzeczy.
Operatory warunkowe w React są w rzeczywistości bardzo łatwe do obejścia. Można to zrobić na dwa sposoby:
{someItem && displayThis}
{someItem ? displayThisIfTrue : displayThisIfFalse}
Jedynym zastrzeżeniem, które możesz napotkać, jest to, że „someItem” nie jest wyrażeniem boolowskim. Jeśli jest napisane, że „0” zareaguje, wypisze 0 lub „zareaguje na język natywny”, wyświetli błąd dotyczący konieczności zawinięcia „0” w element tekstowy. Zwykle nie stanowi to problemu w przypadku fałszywych testów, ale będzie stanowić problem w przypadku testów zgodnych z prawdą. Na przykład:
{!someItem && displayThis}
{someItem && displayThis}
Moja często używana sztuczka? podwójne negatywy.
{!!someItem && displayThis}
Zauważ, że nie dotyczy to operatorów trójskładnikowych (myVar? True: false), ponieważ niejawnie konwertuje wynik na wyrażenie boolowskie.