React Bedingtes Rendern
In React können Sie verschiedene Komponenten erstellen, um die verschiedenen Verhaltensweisen zu kapseln, die Sie benötigen. Basierend auf Änderungen im Anwendungszustand können Sie dann nur einige davon rendern.
Bedingtes Rendern in React funktioniert genauso wie in JavaScript. Verwenden Sie JavaScript-Operatoren wie if oder den Bedingungsoperator, um Elemente zu erstellen, die den aktuellen Zustand darstellen, und lassen Sie dann React die UI basierend darauf aktualisieren.
Schauen wir uns zunächst zwei Komponenten an:
function UserGreeting(props) {
return <h1>欢迎回来!</h1>;
}
function GuestGreeting(props) {
return <h1>请先注册。</h1>;
}
Wir werden eine Greeting-Komponente erstellen, die abhängig davon, ob der Benutzer angemeldet ist, eine davon anzeigt:
React-Beispiel
Ausprobieren »
Elementvariablen
Man kann Variablen verwenden, um Elemente zu speichern. Das kann helfen, einen Teil der Komponente bedingt zu rendern, während der Rest der Ausgabe unverändert bleibt.
Im folgenden Beispiel erstellen wir eine zustandsbehaftete Komponente namens LoginControl.
Es wird basierend auf dem aktuellen Zustand<LoginButton />oder<LogoutButton />rendern, und es wird außerdem das ... aus dem vorherigen Beispiel rendern.<Greeting />。
React-Beispiel
Ausprobieren »
UND-Operator &&
Man kann jeden Ausdruck in JSX einbetten, indem man ihn in geschweifte Klammern einschließt, einschließlich des logischen UND && von JavaScript, mit dem man ein Element bequem bedingt rendern kann.
React-Beispiel
Ausprobieren »
In JavaScript,true && expressiongibt immerexpressionzurück, währendfalse && expression gibt immerfalse zurück。
Deshalb wird, wenn die Bedingungtrue,&&ist, das Element auf der rechten Seite gerendert; wenn siefalseist, ignoriert React es und überspringt es.
Ternär
Eine andere Methode für bedingtes Rendern ist die Verwendung des bedingten Operators von JavaScript:
condition ? true : false.
Im folgenden Beispiel verwenden wir ihn, um ein kleines Stück Text bedingt zu rendern.
render() {
const isLoggedIn = this.state.isLoggedIn;
return (
<div>
The user is <b>{isLoggedIn ? 'currently' : 'not'}</b> logged in.
</div>
);
}
Es kann auch in größeren Ausdrücken verwendet werden, obwohl es nicht sehr intuitiv ist:
render() {
const isLoggedIn = this.state.isLoggedIn;
return (
<div>
{isLoggedIn ? (
<LogoutButton onClick={this.handleLogoutClick} />
) : (
<LoginButton onClick={this.handleLoginClick} />
)}
</div>
);
}
Verhindern des Renderns von Komponenten
In seltenen Fällen möchten Sie vielleicht eine Komponente ausblenden, obwohl sie von einer anderen Komponente gerendert wird. Sie können dies erreichen, indem die render-Methode null anstelle ihres Renderergebnisses zurückgibt.
Im folgenden Beispiel,<WarningBanner />rendert die Komponente bedingt basierend auf dem Wert der Prop warn. Wenn der Wert von warn false ist, wird die Komponente nicht gerendert:
React-Beispiel
Ausprobieren »
Das Zurückgeben von null aus der render-Methode einer Komponente wirkt sich nicht auf die Callbacks der Lifecycle-Methoden der Komponente aus. Zum Beispiel können componentWillUpdate und componentDidUpdate weiterhin aufgerufen werden.
Andere Erweiterungen