일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 타입스크립트
- 파이어베이스
- 프론트엔드
- 프로그래머스
- 프리온보딩
- Component
- firebase
- JS
- es6
- 알고리즘
- Reducer
- axios
- localstorage
- react
- 리액트
- TypeScript
- 브라우저
- JavaScript
- CORS
- Redux
- state
- 원티드
- 비트 연산자
- 자바스크립트
- til
- Frontend
- 컴포넌트
- react localStorage
- array
- v9
- Today
- Total
도리쓰에러쓰
[React] React에서 자주 사용하는 if문 작성패턴 5개 본문
1. Component 안에서 쓰는 if-else문
function Component() {
if(true) {
return <p>true일 때 보이는 HTML</p>;
} else {
return null;
}
}
💡 위 코드처럼 쓰려면 else 생략이 가능합니다.
function Component() {
if(true) {
return <p>true일 때 보이는 HTML</p>;
}
return null;
}
: JavaScript function 안에선 return 이라는 키워드를 만나면 return 밑에 있는 코드는 더 이상 실행되지 않습니다.
2. JSX 안에서 사용하는 삼항연산자
삼항연산자(ternary operator) 형식
조건문 ? 조건문 참일 때 실행할 코드 : 조건문 거짓일 때 실행할 코드
function Component() {
return (
<div>
{
1 === 1
? <p>참일 때 보여줄 HTML</p>
: <p>거짓일 때 보여줄 HTML</p>
}
</div>
)
}
: if-else문 대신 사용할 수 있는게 장점이며, 삼항연산자는 그냥 if와는 다르게 JSX 안에서도 실행 가능하며 조건을 간단히 주고 싶을 때 사용합니다.
💡 삼항연산자는 중첩 사용도 가능합니다.
function Component() {
return (
<div>
{
1 === 1
? <p>참일 때 보여줄 HTML</p>
: ( 2 === 2
? <p>1</p>
: <p>2</p>
)
}
</div>
)
}
: else문 안에 if-else문을 하나 추가하였습니다. 하지만 가독성이 떨어지는 코드라 추천드리진 않습니다. return문 바깥에서 if-else문 쓰시고 그 결과를 변수로 저장하여 <div> 안에서 삼항연산자를 사용하는 것이 좋을 것 같습니다.
3. && 연산자로 if 역할 대신하기
- 우선 && 연산자에 대해 알아보겠습니다.
true && false; // false
true && true; // true
: 왼쪽 오른쪽 둘 다 true이면 true값이 나오고, 하나라도 false면 false값이 나옵니다.
- && 연산자로 비교할 때 true와 false가 아닌 자료형을 넣어보겠습니다.
true && '안녕'; // '안녕'
false && '안녕'; // false
: && 기호를 중첩해서 여러개 쓰면 && 사이에서 처음 등장하는 falsy값을 찾아주고 그게 아니면 마지막 값을 남겨줍니다.
- if문 사용할 때
"만약 이 변수가 참이면 HTML을 출력하고, 거짓이면 null을 뱉어라"
라는 패턴의 if문을 쓰는 경우가 많습니다.
function Component() {
return (
<div>
{
1 === 1
? <p>참이면 보여줄 HTML</p>
: null
}
</div>
)
}
- 위 코드를 아래 코드처럼 && 연산자를 사용하여 코드를 축약할 수 있습니다.
function Component() {
return (
<div>
{
1 === 1 && <p>참이면 보여줄 HTML</p>
}
</div>
)
}
: 조건문이 true이면 오른쪽에 적어둔 JSX문이 그 자리에 남지만, 조건문이 false이면 false가 남습니다. (false가 남으면 HTML로 렌더링하지 않습니다.)
4. switch-case 조건문
- 우선 이전에 redux에서 reducer 만들 때 사용했던 if-else문을 보겠습니다.
function reducer(state, action) {
if(action.type === '수량증가') {
return 수량증가된state
} else if(action.type === '수량감소') {
return 수량감소된state
} else {
return state
}
}
- 위 코드처럼 if-else문으로 연달아 사용한 것을 switch 문법을 이용하면 아래 코드처럼 작성할 수 있습니다.
function reducer(state, action) {
switch (action.type) {
case '수량증가' :
return 수량증가된state;
case '수량감소' :
return 수량감소된state;
default :
return state
}
}
: if-else문을 연달아서 쓸 때보다 코드가 약간 줄어들고, 코드 가독성도 좋아집니다.
5. 오브젝트 자료형을 응용한 enum
예를 들어, 쇼핑몰 페이지에서 상품 설명 부분을 Tab으로 만든다고 하고,
경우에 따라서 상품정보 / 배송정보 / 환불약관 내용을 보여주고 싶다고 합시다.
현재 state가 info면 <p>상품정보</p>
현재 state가 shipping면 <p>배송정보</p>
현재 state가 refund면 <p>환불약관</p>
위 내용을 보여주고자 한다면,
state를 만들어놓고 if문으로 state를 검사하는 문법을 사용할 수도 있습니다.
하지만 이번엔 if문이 아니라 JavaScript Object 자료형에 내가 보여주고 싶은 HTML을 다 담아보겠습니다.
function Component() {
let 현재상태 = 'info';
return (
<div>
{
{
info : <p>상품정보</p>,
shipping : <p>배송관련</p>,
refund : <p>환불약관</p>
}[현재상태]
}
</div>
)
}
- 원래 JSX는 Object에 담든, Array에 담든 아무 상관이 없습니다.
- Object 자료형으로 HTML을 다 정리해서 담은 다음, 마지막 Object{} 뒤에 [] 대괄호를 붙여서
"key값이 현재상태인 자료를 뽑겠습니다" 라고 작성한 것입니다.
- 그럼 '현재상태' 라는 변수값에 따라 원하는 HTML을 보여줄 수 있는겁니다.
* 만약 let 현재상태가 'info'면 <p>상품정보</p>가 보여질 것이고,
let 현재상태가 'refund'면 <p>환불약관</p>가 보여질 것입니다.
💡 혹은 Object를 변수로 저장해놓고 사용하셔도 됩니다.
let tabUI = {
info : <p>상품정보</p>,
shipping : <p>배송관련</p>,
refund : <p>환불약관</p>
}
function Component() {
let 현재상태 = 'info';
return (
<div>
{
tabUI[현재상태]
}
</div>
)
}
'코딩애플 (React) > 기초수업(코딩애플) - 3' 카테고리의 다른 글
[React] 성능잡기1 :: lazy loading / React devtools (0) | 2022.02.02 |
---|---|
[React] state 변경함수 사용할 때 주의점 : async (0) | 2022.02.02 |
[React] shop 홈페이지 기능 완성하기 가이드 (0) | 2022.02.01 |
[React] Redux5 :: useSelector, useDispatch (0) | 2022.02.01 |
[React] Redux4 :: dispatch로 데이터 보내기 (0) | 2022.02.01 |