달마루
기획자에서 개발자로
달마루
전체 방문자
오늘
어제
  • 분류 전체보기 (334)
    • 기획 이야기 (3)
    • 개발자로 전향한 이유 (1)
    • Github Address (1)
    • 개발자, 그 여정 (11)
      • 기초특강 (4)
      • 국비학원 선정 (4)
      • BitCamp_수업내용 (1)
      • 학원 프로젝트 후기 (1)
      • 정보처리기사 (1)
      • 개발 이야기 (0)
    • 개념 창고 (126)
      • JAVA (50)
      • CS (1)
      • Database (27)
      • NetWork (2)
      • 자료 구조 (2)
      • React (8)
      • Spring (3)
      • JPA (1)
      • HTML & CSS (18)
      • JS (3)
    • algorithm (186)
      • 백준 (161)
      • 프로그래머스 (23)
    • 사는 이야기 (0)

블로그 메뉴

  • Github
  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 혼자공부하는SQL
  • HTML
  • MySQL
  • 알고리즘
  • 프로그래머스
  • java
  • 백준문제풀이
  • 백준
  • select
  • sql 문제풀이
  • 혼공SQL
  • Scanner
  • 문제풀이
  • math
  • 백준알고리즘
  • BOJ
  • BRONZE
  • Bronze III
  • SQL고득점Kit
  • 알고리즘풀이
  • java algorithm
  • Bronze V
  • BOJ algorithm
  • react
  • SQL
  • Algorithm
  • Bronze IV
  • programmers
  • 자바
  • 혼공MySQL

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
달마루

기획자에서 개발자로

[React] 조건부 렌더링(Conditional Rendering)
개념 창고/React

[React] 조건부 렌더링(Conditional Rendering)

2023. 3. 30. 02:39

Condition 은 조건을 의미한다.

조건부 렌더링(Conditional Rendering) : 특정 조건에 따라서 랜더링이 달라지는 것
보통 true / false 로 조건에 따라 다르게 렌더링한다.

java script의 truthy / falsy
true
{} (empty object)
[] (empty array)
42 (number, not zero)
"0", "false" (string, not empty)

// falsy
0, -0 (zero, minus zero)
0n (bogInt zero)
'', "", `` (empty string)
null
undefined
NaN (not a number)

개발시 true와 false를 예상하며 해야하기 때문에 구분할 줄 알아야 한다. 


Element Variables : Element를 변수처럼 저장해서 사용하는 것

function LoginControl(props) {
    const [isLoggedIn, setIsLoggedIn] = useState(false);
    
    const handleLoginClick = () => {
    	setIsLoggedIn(true);
	}

	const handleLogoutClick = () => {
    	setIsLoggedIn(false);
    }
    
    let button;
    if (isLoggedIn) {
    	button = <LogoutButton onClick={handleLogoutClik} />;
    } else { 
        button = <LoginButton onClick={handleLogoutClik} />;
    }

	return (
    	<div>
        	<Greeting isLoggedIn={isLoggedIn} />
            {button}
        <div>
    )
}

 

Inline conditions : 조건문을 코드 안에 집어넣는 것
1. inline if (if문의 경우 && 연산자를 사용) &&는 흔히 로지컬 앤드 연산자라고 함. 

// true 이후 값 체크 
true && expression -> expression  

// false 이후 값 체크 X 이미 false
false && expression -> false 

function Mailbox(props) {
	const unreadMessages = props.unreadMessages;
    
    return (
    	<div>
			<h1>안녕하세요!<h1>
            {unreadessages.length > 0 && 
				<h2>
                	현재 {unreadMessages.length}개의 읽지 않은 메시지가 있습니다.
				</h2>
			}	
    	</div>
    );
}

&& 연산자 사용시 조건문에 false expression 사용시 뒤에 나오는  expression는 평가되지 않지만 
false expression 결과값이 return이 되어서 주의해야한다.

function Counter(props) {
	const count = 0;
    
    return (
    	<div>
        	{count && <h1> 현재 카운트: {count}</h1>}
        <div>
	);
}

위 코드의 결과가 아무 것도 안나오는 것이 아닌,
count의 값인 0이 들어가서 <div>0</div> 가 리턴된다. 

2. inline if-Else : if-Else 문을 필요한 곳에 직접 넣어서 활용하는 방법. 
보통 삼항 연산자로 사용하며, 조건문에 값에 따라서 다른 Element를 보여줄 때 사용.



inline if : 보여주거나 안보여주거나
inline if-Else : 보여주는건 기본이고, 값에 따라 다른 Element를 보여줄 때

삼항 연산자는 
coundition ? true : false 
조건 ? 참시 리턴 : 거짓시 리턴

React에서 사용시 예시1

function UserStatus(Props) {
	return (
    	<div>
        	이 사용자는 현재 <b>{props.isLoggedIn ? '로그인' : '로그인하지 않은'} <b> 상태입니다. 
        <div>
}

true시 '로그인' / false시 '로그인 하지 않은' 을 return (b 태그 안의 텍스트 값)

React에서 사용시 예시2

true시 'LogoutButton' / false시 'LoginButton' 을 return (div 태그 안의 텍스트 값)


Component 렌더링을 막기 위해서는?
React는 null을 리턴하면 렌더링하지않는다.


저작자표시 비영리 변경금지 (새창열림)

'개념 창고 > React' 카테고리의 다른 글

[React] Composition vs Inheritance  (0) 2023.03.30
[React] Form  (0) 2023.03.30
[React] List and Keys  (0) 2023.03.30
[React] Event  (0) 2023.03.29
[React] React Hook  (0) 2023.03.29
    '개념 창고/React' 카테고리의 다른 글
    • [React] Form
    • [React] List and Keys
    • [React] Event
    • [React] React Hook
    달마루
    달마루
    항상 어제보다 좋은 코드를 지향합니다. https://github.com/LimDongHyun99

    티스토리툴바