// 목록 또는 단락을 조건부 렌더링 하기 위한 조건 상태let usingList =truelet usingBorderColor =trueconstapp= ( <divclassName="app"> <h1>조건부 렌더링</h1> {/* JSX 내부의 주석 처리 */} {/* 조건에 따라 목록을 렌더링 */} {usingList ? ( <ul> <li>조건 문 활용</li> <liclassName={`bordered ${ usingBorderColor ?'bordered-red':''}`.trim()} > 조건 식 (3항식, 논리곱/합 연산자) 활용 </li> </ul> ) : ( <p>"조건 문 활용" 또는 "조건 식 (3항식, 논리곱/합 연산자) 활용"</p> )} </div>)
4-(4) 논리 연산자
// 목록 또는 단락을 조건부 렌더링 하기 위한 조건 상태let usingList =truelet usingBorderColor =trueconsta11y= { hiddenClass:'a11y-hidden',}constapp= ( <divclassName="app"> <h1className={a11y.hiddenClass ||null}>조건부 렌더링</h1> {/* JSX 내부의 주석 처리 */} {/* 조건에 따라 목록을 렌더링 */} {usingList ? ( <ul> <li>조건 문 활용</li> <liclassName={`bordered ${ usingBorderColor ?'bordered-red':''}`.trim()} > 조건 식 (3항식, 논리곱/합 연산자) 활용 </li> </ul> ) : ( <p>"조건 문 활용" 또는 "조건 식 (3항식, 논리곱/합 연산자) 활용"</p> )} </div>)
import React from'react'import ReactDOM from'react-dom'import'./index.css'// 조건부 처리할 함수functionconditionaRendering(count =0) {// 조건문 switchswitch (count) {case1:return ( <ul> <li>조건 문 사용</li> <li>조건 식 (3항식, 논리곱/합 연산자) 활용</li> </ul> )breakcase2:return <p>"조건 문 활용" 또는 "조건 식 (3항식, 논리곱/합 연산자) 활용"</p>breakdefault:return ( <p> React의 <abbrtitle="JavaScript Syntax eXtension">JSX</abbr>는 JavaScript 객체(React 요소)를 반환합니다. </p> ) }}// 숫자를 전달하면 항상 0, 1, 2 중에 하나인 값을 반환하도록 만든다.functionrandomCount(number) {return number %3}ReactDOM.render(app,document.getElementById('root'))
import React from'react'import ReactDOM from'react-dom'import'./index.css'// 목록 또는 단락을 조건부 렌더링 하기 위한 조건 상태let usingList =truelet usingBorderColor =trueconstapp= ( <divclassName="app"> <h1>조건부 렌더링</h1> {/* JSX 내부의 주석 처리 */} {/* 조건에 따라 목록을 렌더링 */} {usingList ? ( <ul> <li>조건 문 활용</li> <liclassName={`bordered ${ usingBorderColor ?'bordered-red':''}`.trim()} > 조건 식 (3항식, 논리곱/합 연산자) 활용 </li> </ul> ) : ( <p>"조건 문 활용" 또는 "조건 식 (3항식, 논리곱/합 연산자) 활용"</p> )} </div>)ReactDOM.render(app,document.getElementById('root'))
import React from'react'import ReactDOM from'react-dom'import'./index.css'// 목록 또는 단락을 조건부 렌더링 하기 위한 조건 상태let usingList =truelet usingBorderColor =trueconsta11y= { hiddenClass:'a11y-hidden',}constapp= ( <divclassName="app"> <h1className={a11y.hiddenClass ||null}>조건부 렌더링</h1> {/* JSX 내부의 주석 처리 */} {/* 조건에 따라 목록을 렌더링 */} {usingList ? ( <ul> <li>조건 문 활용</li> <liclassName={`bordered ${ usingBorderColor ?'bordered-red':''}`.trim()} > 조건 식 (3항식, 논리곱/합 연산자) 활용 </li> </ul> ) : ( <p>"조건 문 활용" 또는 "조건 식 (3항식, 논리곱/합 연산자) 활용"</p> )} </div>)ReactDOM.render(app,document.getElementById('root'))
5. 리스트 렌더링
5-(1) 들어가기 전
리스트를 레더링하여 JSX 요소에 데이터를 바인딩 할 때 아래와 같이 배열 데이터를 순환하여 사용한다.
forEach() 메서드는 왜 사용하지 않는가?
사용을 못하는 것은 아니지만forEach() 메서드는 값을 반환하지 않기 때문에 JSX에서 사용하기에 적합하지 않다.
실습 (1)
아 위에서 먼저 콘솔 패드에서 map() 메서드를 사용해서 배열 데이터를 바인딩 한 것처럼 JSX에서도 아래와 같이 배열 데이터를 요소에 바인딩 했다.
사용 방법은 이전의 데이터 바인딩 방법과 똑 같다. {} 로 묶어주고 그 안에서 map() 메서드를 사용하고 JSX 요소를 작성해서 순환되는 데이터가 어디에 들어가야 할지 설정한다.
배열 데이터를 순환 처리 해서 사용하도록 map()메서드를 사용하고 각 아이템을 데이터 바인딩을 한다. 그리고 리스트에는 고유한 key를 가지고 있어야만 오류가 표시되지 않는다.
6. 주의할 점
6-(1) 속성 이름은 camelCase 표기법으로 사용하기
JSX는 HTML이 아닌 JavaScript 식이다. 그래서 React DOM은 HTML 표준 속성 이름 중 일부는 그대로 이름을 사용할 수 없다. 예를 들어 class는 className으로, tabindex는 tabIndex로 사용해야 한다. 즉, 음절이 2개 이상인 경우 camelCase로 표기하기!