function Component() {
if ( true ) {
return <p>참이면 보여줄 HTML</p>;
} else {
return null;
}
}
component안에 jsx를 조건부로 보여주고 싶으면 이렇게 씀.
자바스크립트 if문의 return()안에 jsx내에서는 자용 불가 → 즉, <div>if(어쩌구){저쩌구}</div>가 불가능
그래서 보통 return + JSX 전체를 뱉어내는 if문을 작성해 사용함
📎else와 중괄호를 생략 가능
function Component() { if ( true ) { return <p>참이면 보여줄 HTML</p>; } return null; }
조건문 ? 참일 때 실행 코드 : 거짓일 때 실행 코드
이 형식에 맞추서 쓰면 됨
function Component() {
return (
<div>
{
1 === 1
? <p>참이면 보여줄 HTML</p>
: null
}
</div>
)
}
jsx내에서 if/else대신 쓸 수 있다는게 장점
삼항연산자는 if문과 다르게 jsx안에서 실행 가능하고 조건을 간단히 주고 싶을 때 사용
function Component() {
return (
<div>
{
1 === 1
? <p>참이면 보여줄 HTML</p>
: ( 2 === 2
? <p>안녕</p>
: <p>반갑</p>
)
}
</div>
)
}
남이 읽었을 때 + 나중에 읽었을때 보기 힘든코드는 좋지 않음
그냥 return 밖에 ifelse쓴 다음 결과를 변수에 저장해서 저기 집어넣는게 나을 듯
true && false ; //false
true && true ; //true
왼쪽 오른쪽 둘 다 true면 전체를 true로 변경할때 씀
근데 true/false가 아닌 자료형을 넣으면
true && '안녕' ; //'안녕'
false && '안녕' ; //false
true && false && '안녕' ; //false
return (
<div>
{
1 === 1
? <p>참이면 보여줄 HTML</p>
: null
}
</div>
)
}
function Component() {
return (
<div>
{ 1 === 1 && <p>참이면 보여줄 HTML</p> }
</div>
)
}
위 두 예저는 동일한 역할을 함
밑의 예제를 보면 &&연산자로 조건식과 오른쪽 jsx자료를 비교하고 있음.
이 때, 왼쪽 조건식이 true면 오른족 jsx가 자리에 남고 왼쪽 조건식이 false면 false가 남음
(false가 남으면 html로 렌더링하지 않음)
"만약에 이 변수가 참이면<p></p>, 참이아니면 null"이런 상황에 자주 쓸 수 있는 간단한 조건문
기본 문법인데 중첩 if문 여러개 있을 경우 가끔 씀
function Component2(){
var user = 'seller';
if (user === 'seller'){
return <h4>판매자 로그인</h4>
} else if (user === 'customer'){
return <h4>구매자 로그인</h4>
} else {
return <h4>그냥 로그인</h4>
}
}
이렇게 연달아 if문을 여러개 써야하는 상황에서 switch를 쓰면 더 간단하게 짤 수 있음
function Component2(){
var user = 'seller';
switch (user){
case 'seller' :
return <h4>판매자 로그인</h4>
case 'customer' :
return <h4>구매자 로그인</h4>
default :
return <h4>그냥 로그인</h4>
}
}
장점 : if문 연달아 쓸 때 코드가 줄어듦
단점 : 조건식란에 변수 하나만 검사할 수 있음.
경우에 따라 다른 html태그들을 보여주고 싶은 경우
if문 여러개 혹은 삼항연산자를 여러개 작성하지않고 도 구현할 수 있음.
예를 들어 쇼칭몰에서 상품설명부분을 탭(상품정보/배송정보/환불약정..)으로 만들려고 함
현재 state가 info면 <p>상품정보</p>
현재 state가 shipping이면 <p>배송정보</p>
현재 state가 refund면 <p>환불약관</p>
이렇게 작성하고 싶은 것!
일단 state를 만들고 if문으로 state검사 문법을 쓰는 방법이 아니라 자바스크립트 object자료형에 내가 보여주고 싶은 html을 다 담음
function Component() {
var 현재상태 = 'info';
return (
<div>
{
{
info : <p>상품정보</p>,
shipping : <p>배송관련</p>,
refund : <p>환불약관</p>
}[현재상태]
}
</div>
)
}
(원래 jsx상에서 html태그들을 obejct나 array에 담아도 됨.)
암튼 이렇게 object자료형으로 html을 다 정리해서 담은 다음
마지막에 object{}뒤에 []대괄호를 붙여 "key값이 현재 상태인 자료를 뽑음"이라고 써놓는 거임
그럼 현재상태라는 변수의 값에 따라 원하는 html을 보여줄 수 있음.
혹은 변수에 저장해서 써도 깔끔해질 것 같음
이렇게!
var 탭UI = { info : <p>상품정보</p>, shipping : <p>배송관련</p>, refund : <p>환불약관</p> } function Component() { var 현재상태 = 'info'; return ( <div> { 탭UI[현재상태] } </div> ) }