TIL 20211103[99便目]
CardAdd構成部品条件レンダリングの適用
「if(cardListCheck.length==0)」の条件で、カードが1枚もなければ+のボックスが表示され、カードが1枚あればCardPortfolioコンポーネントが表示されます.
const CardAdd = () => {
const cardListCheck = useSelector((state) => state.cards.cardList);
const cardList = useSelector((state) => state.cards);
if (cardListCheck.length === 0) {
return (
<Grid>
<Btn
onClick={() => {
history.push('/write');
}}
>
프로젝트 추가하기
</Btn>
<Grid>
+
</Grid>
</Grid>
);
}
return (
<Grid>
<Btn
onClick={() => {
history.push('/write');
}}
>
프로젝트 추가하기
</Btn>
{cardList.allIds.map((cardId) => {
return (
<Grid key={cardId}>
<CardPortfolio cardId={cardId} />
</Grid>
);
})}
</Grid>
);
};
export default CardAdd;
下の画像を見ると、画面の変化がよく、条件に合っています.反応条件レンダリング
論理&&演算子を持つインライン条件
式をJSXに挿入するには、カッコ
function Mailbox(props) {
const unreadMessages = props.unreadMessages;
return (
<div>
<h1>Hello!</h1>
{unreadMessages.length > 0 &&
<h2>
You have {unreadMessages.length} unread messages.
</h2>
}
</div>
);
}
const messages = ['React', 'Re: React', 'Re:Re: React'];
ReactDOM.render(
<Mailbox unreadMessages={messages} />,
document.getElementById('root')
);
したがって、条件がtrueの場合、次の要素が露出します.条件がfalseの場合、reactはスキップします.
条件付き演算子の行内If-Else
// 예시1.
render() {
const isLoggedIn = this.state.isLoggedIn;
return (
<div>
The user is <b>{isLoggedIn ? 'currently' : 'not'}</b> logged in.
</div>
);
}
より大きな表現にも使えますが、はっきり見えません.// 예시2.
render() {
const isLoggedIn = this.state.isLoggedIn;
return (
<div>
{isLoggedIn ? (
<LogoutButton onClick={this.handleLogoutClick} />
) : (
<LoginButton onClick={this.handleLoginClick} />
)}
</div>
);
}
JavaScriptと同様に、お客様とチームが読みやすいと考えている内容に応じて適切なスタイルを選択できます.また、条件が複雑になりすぎる場合には、素子を抽出することを推奨します.
P.S.参考資料:https://reactjs-kr.firebaseapp.com/docs/conditional-rendering.html
if文で条件を与えた後、反応式ドキュメントで条件レンダリングを検索します.if文でレンダリングするのも良いですが、&&演算子または3つの演算子を使用すると、より短い構文を生成できます.実際のプロジェクトの再構築では、&&演算子または3つの演算子を使用してフレーズに変更する必要があります.
Reference
この問題について(TIL 20211103[99便目]), 我々は、より多くの情報をここで見つけました https://velog.io/@arong/TIL-20211103-항해99-49일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol