일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- 웹디실기
- 연산자
- github
- 프론트엔드
- 정보처리기사
- 실기
- HTML
- 웹퍼블리셔
- 코드공유
- CSS
- 웹디자인기능사
- 리액트
- 비전공자
- react
- 슬라이드전환
- PROJECT
- Supabase
- JS
- 웹디자인기능사실기
- 생활코딩
- 타입스크립트
- web
- 세로메뉴바
- 자바스크립트
- 코딩독학
- 깃
- git
- jQuery
- JavaScript
- 렛츠기릿자바스크립트
Archives
- Today
- Total
코딩하는라민
[React] 조건부 렌더링 본문
728x90
반응형
[React] 조건부 렌더링
📌 조건부 렌더링
리액트에서는 원하는 동작을 `캡슐화`하는 컴포넌트를 만들 수 있다.
이렇게 하면 상태에 따라 몇 개의 컴포넌트만 화면에 효율적으로 렌더링할 수 있다.
조건부 렌더링은 특정 조건에 따라 다른 결과물을 렌더링하는 것이다.
리액트에서는 조건, 상태에 맞는 컴포넌트를 반환을 위해 if문이나 조건부 연산자를 사용한다.
✅ if문 사용해서 조건부 렌더링하기
조건에 따라 보여지는 컴포넌트또는 내용이 다를 경우 조건부 렌더링하면 된다.
function Sleep(){
return console.log('Go to sleep');
}
function Study(){
return console.log('Study...')
}
두 함수 중에서 상태에 따라 하나의 컴포넌트만 보여주는 컴포넌트를 만들 것이다.
function Todo(){
let isSleep = props.isSleep;
if(isSleep){
return <Sleep />
} else {
return <Study />
}
}
function Home(){
return(
<Todo isSleep={true}/>
)
}
Home 컴포넌트의 isSleep 의 값이 true 인 경우 Sleep 컴포넌트가 보이게 된다.
Home 컴포넌트의 true 를 false 로 바꾸면 Sleep 컴포넌트 대신 Study 컴포넌트가 보인다..
✅ 삼항 연산자를 사용해 조건부 렌더링하기
function Eat({title, sub, isGood}){
return(
<div>
{isGood ? 'Good' : 'more please'} {sub}
</div>
)
}
function Home(){
return(
<Eat title="milk" sub="chocolate" isGood={true} />
)
}
isGood 이 true 라면 'Good' 이 false 라면 'more please' 가 보인다.
✅ && 연산자 사용
삼항연산자 뿐만 아니라 && 연산자를 이용해 조건부 렌더링할 수 있다.
// 단축 평가 논리 계산법
// Sleep : true 인 경우
{Sleep && Study} // Study
// Sleep : false 인 경우
{Sleep && Study} // Sleep
✅ || 연산자
|| 는 첫번째 true 값을 가져오고, 두 조건이 모두 false 이면 오른쪽 값을 가져온다.
왼쪽 조건을 undefined로 했을 때, 오른쪽 값을 가져온다.
import React from 'react';
import './style.css';
const App = () => {
let value = undefined;
let hello = "hello React?";
return (
<div>
{ value || hello }
</div>
);
};
export default App;
value가 undefined 일 경우에만 오른쪽을 렌더링!
📌 토글 버튼 구현하기
import React, { useState } from 'react';
function Control() {
const [myState, setMyState] = useState(true);
const [myWord, setMyWord] = useState('버튼을 클릭하세요');
function handleClick() {
if (!myState) {
setMyState(true);
setMyWord('잘래요');
} else {
setMyState(false);
setMyWord('싫어요');
}
}
return (
<div>
{myWord}
<button onClick={handleClick}>
{myState ? 'Sleeping~' : 'Study....'}
</button>
</div>
);
}
export default Control;
참고 : 리액트 공식 문서, 벨로퍼트와 함께하는 모던 리액트
등을 공부하고, 간단하게 정리한 내용입니다. 잘못된 부분이나 문제되는 점이 있으면 댓글 부탁드립니다.
728x90
반응형
'Core > React' 카테고리의 다른 글
[React] form 제어하기 (0) | 2023.02.28 |
---|---|
[React] 리스트(배열) 렌더링, Key (0) | 2023.02.26 |
[React] state 와 setState() - 클래스형 컴포넌트 (0) | 2023.02.25 |
[React] 이벤트 처리하기 (0) | 2023.02.22 |
[React] 컴포넌트(Component)와 Props (1) | 2023.02.22 |