JSX

JSX(JavaScript XML)에 대해서 살펴본다.

JSX

JSX란 자바스크립트를 기반으로 하여 태그(Tag) 형태의 문서를 생성할 수 있도록 만들어진 템플릿 문법이다.

JSX 값 출력

JSX에서 Javascript 값을 출력하고 싶다면 중괄호 { } 를 사용한다.

const name = '피카츄';

app.render(
    <>
        <h1>Your name is {name}</h1>
    </>
);

계산하여 출력하는 것도 가능하다.

const number = 12.345;

app.render(
    <>
        <h1>Number : {number}, Round Number : {parseInt(number)}</h1>
    </>
);

조건부 출력

값에 따라 조건부 화면을 렌더링하는 것도 가능하다.

삼항연산자

삼항연산자는 조건식과 참/거짓일 경우에 대한 내용을 통해 화면을 구현한다. 구문 자체가 지저분하기 때문에 간단한 작업에서 사용한다.

const value = 5;

app.render(
    <>
        <h1>{value} is {value%2==0 ? '짝수':'홀수'}</h1>
    </>
);

if-else

JSX 내부에서는 if-else를 사용할 수 없으므로 외부에서 미리 Element를 생성하여 작성할 수 있다. 화면이 복잡해질 수록 이 방식이 유용하다.

const value = 5;

let el;
if(value % 2 == 0){
    el = <h1>{value} is 짝수</h1>
}
else {
    el = <h1>{value} is 홀수</h1>
}

app.render(
    <>
        {el}
    </>
);

객체 출력

객체가 데이터로 주어진 경우 이를 이용하여 화면에 출력할 수 있다. 객체의 요소에 접근하려면 참조 연산(.)을 사용한다.

const member = {
    id:"admin", 
    nickname:"관리자",
    password:"1234"
};

app.render(
    <>
        <h1>회원 정보</h1>
        <ul>
            <li>아이디 : {member.id}</li>
            <li>닉네임 : {member.nickname}</li>
            <li>비밀번호 : {member.password}</li>
        </ul>
    </>
);

반복 출력

배열에 대해 반복하여 화면 출력이 가능하다.

const lotto = [5, 13, 15, 23, 41, 44];
const lottoElement = lotto.map(number=><h2>{number}</h2>);

app.render(
    <>
        <h1>로또번호</h1>
        {lottoElement}
    </>
);

map은 배열 내부의 요소를 활용하여 다른 내용으로 변환할 수 있도록 하는 변환 함수이다.

key의 사용

key는 배열의 요소가 변하여 렌더링이 다시 일어나야 할 때 해당하는 요소를 별도의 탐색 없이 식별하기 위하여 부여하는 고유 값이다. 유일한 항목이 존재할 경우 사용하며, 객체는 지정할 수 없다.

const monsterList = [
    {no : 1 , name : "이상해씨", type:"풀"},
    {no : 4 , name : "파이리", type:"불꽃"},
    {no : 7 , name : "꼬부기", type:"물"},
    {no : 25 , name : "피카츄", type:"전기"},
    {no : 26 , name : "라이츄", type:"전기"}
];
const monsterElements = monsterList.map(monster=>
    <h2 key={monster.no}>번호 : {monster.no}, 이름 : {monster.name}, 속성 : {monster.type}</h2>
);

app.render(
    <>
        <h1>몬스터 목록</h1>
        {monsterElements}
    </>
);

Last updated