React에서 JSX를 조건부로 렌더링하는 4가지 방법
일반적으로 개발자는 조건부 렌더링을 위해 JSX 내부에서
if else
또는 switch statement
를 사용하지 않습니다. if else
또는 switch statement
가 ternary operator
또는 logical operator
보다 더 많은 코드 줄을 사용하기 때문입니다. 그러나 처리할 조건이 두 개 이상인 경우에는 if else
또는 switch statement
를 사용해야 합니다.삼항 연산자
function TernaryOperator() {
return (
<>
{
/* Ternary Operator */
'a'==='a' ? <p>Hi</p> : <p>Bye</p>
}
</>
)
}
export default TernaryOperator
Explanation
Only if the condition
'a'==='a'
is true,<p>Hi</p>
will be rendered one the screen. Otherwise,<p>Bye</p>
will be rendered on the screen.
Note:
It's not a very realistic example because you would never compare
'a'==='a'
in a real-world application. But this comparison is not the main point here. The point is the use of the ternary operator.
논리 연산자
AND
&&
(논리 연산자)function LogicalAnd() {
return (
<>
{
/* Logical 'AND' Operator*/
'a'==='a' && <p>Hi</p>
}
</>
)
}
export default LogicalAnd
)
Explanation
Only if the condition
'a'==='a'
is true,<p>Hi</p>
will be rendered on the screen.
OR
||
(논리 연산자)function LogicalOR({name, labelText}) {
return (
<>
/* Logical 'OR' Operator*/
{labelText || name}
</>
)
}
export default LogicalOR
Explanation:
If
labelText
andname
both props are passed into this component, thenlabelText
will be rendered on the screen. But if only one of them (name
orlabelText
) is passed as a prop, then that passed prop will be rendered on the screen.
NOT
!
(논리 연산자)
function LogicalNOT ({name}) {
/* Logical NOT Operator */
if (!name) {
return null;
}
return <p>Hi! My name is {name}.</p>;
}
export default LogicalNOT
Explanation
Only if the
name
prop is passed then<p>Hi! My name is {name}.</p>
will be rendered on the screen, otherwise, nothing will render on the screen.
Note
if (!name) { return null }
, returning early like this is known asEarly Return
.Early Return
is also calledGuard Clause
orBouncer Pattern
.
만약, 그렇지 않다면, 그렇지 않다면
function IfElse() {
return (
<>
{
/*If else condition within an anonymous function*/
(() => {
if('a'==='b') {
return (
<p>Hi</p>
)
} else if ('b'==='b') {
return (
<p>Hello</p>
)
} else {
return (
<p>Bye</p>
)
}
})()
}
</>
)
}
export default IfElse
Note:
Have to use an anonymous function (also need to immediately invoke the function )
Switch 문
function SwitchStatement() {
return (
<>
{
/*Switch Statement within an anonymous function*/
(() => {
switch(true) {
case('a'==='b'): {
return (
<p>Hello</p>
)
}
break;
case('a'==='a'): {
return (
<p>Hi</p>
)
}
break;
default: {
return (
<p>Bye</p>
)
}
break;
}
})()
}
</>
)
}
export default SwitchStatement
Note:
Have to use an anonymous function (also need to immediately invoke the function )
그게 다야.😃 읽어줘서 고마워.🎉
Reference
이 문제에 관하여(React에서 JSX를 조건부로 렌더링하는 4가지 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rasaf_ibrahim/4-ways-to-render-jsx-conditionally-in-react-2bal텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)