Conditional Rendering
Reactは、パッケージングに必要なアクションの構成部品を作成します.
これにより、アプリケーションのステータスに応じて、いくつかの構成部品しかレンダリングできません.
Reactでは、条件レンダリングはJavaScriptの条件処理と同じです.
JavaScript演算子(
if
または조건부 연산자
など)を使用して現在のステータスを表す別名を作成すると、reactは現在のステータスに基づいてUIを更新します.次の2つの構成部品があるとします.
function UserGreeting(props) {
return <h1>Welcome back!</h1>;
}
function GuestGreeting(props) {
return <h1>Please sign up.</h1>;
}
次に、ログインステータスを満たすGreetingコンポーネントを作成して、上記のコンポーネントの1つを表示します.上記の例は、isLoggedIn
propに従って異なる挨拶文を示す.
変数を使用してエンティティを保存でき、出力の他の部分が変わらない場合に条件付きで部分要素をレンダリングできます.
ログアウトとログインボタンを表す2つのコンポーネントがあると仮定します.
function LoginButton(props) {
return (
<button onClick={props.onClick}>
Login
</button>
);
}
function LogoutButton(props) {
return (
<button onClick={props.onClick}>
Logout
</button>
);
}
次の例では、LoginControl
というクラスステータス要素を作成します.
この構成部品は、<LoginButton />
または<LogoutButton />
を現在の状態でレンダリングし、前の例の<Greeting />
も同時にレンダリングする.
JSXでは括弧で式を含めることができます.
ここで、JavaScriptの論理演算子&&
を使用すると、簡単に条件に従ってエンティティを配置できます.
JavaScriptでは、true && expression
は常にexpression
false && expression
と評価され、常にfalse
と評価される.
従って、&&
の後のレイヤは、条件true
で出力され、条件false
であればreactは無視される.
falseと評価できる式を返すと、&&
以降の式はスキップされますが、falseと評価できる式を返します!
次の例はrenderメソッドから<div>0</div>
を返す.
render() {
const count = 0;
return (
<div>
{ count && <h1>Messages: {count}</h1>}
</div>
);
}
エンティティを条件付きでレンダリングする別の方法は、条件付き演算子condition ? true: false
次の例では、条件付きでフレーズをレンダリングします.
render() {
const isLoggedIn = this.state.isLoggedIn;
return (
<div>
The user is <b>{isLoggedIn ? 'currently' : 'not'}</b> logged in.
</div>
);
}
の可読性はやや劣るが、より大きな式にも用いることができる.
render() {
const isLoggedIn = this.state.isLoggedIn;
return (
<div>
{isLoggedIn
? <LogoutButton onClick={this.handleLogoutClick} />
: <LoginButton onClick={this.handleLoginClick} />
}
</div>
);
}
JavaScriptと同様に、読みやすさが良いと思う方法を選択できます.
他の構成部品でレンダリングされる場合、構成部品自体を非表示にしたい場合があります.
レンダリング結果は出力されず、null
に戻るだけで解決します.
以下の例では、<WarningBanner />
はwarn
propの値によってレンダリングされる.
propがfalse
の場合、構成部品はレンダリングされません.
コンポーネントのrender
メソッドからnull
を返すと、ライフサイクルメソッド呼び出しに影響しません
例えば、componentDidUpdate
は呼び出しを継続する.
Reference
この問題について(Conditional Rendering), 我々は、より多くの情報をここで見つけました https://velog.io/@yeonlisa/React-Conditional-Renderingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol