front/react

[react] JSX λž€? (ν‘œν˜„μ‹, 속성, if문은 μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€)

λ°°κ³ νŒŒμš” 2025. 12. 28. 17:01
728x90


πŸ“ JSX λž€?

  • JavaScript XML 의 μ€„μž„λ§
  • JS μ½”λ“œ μ•ˆμ—μ„œ HTML 같은 문법을 μ“Έ 수 있게 ν•΄μ€Œ
  • λΈŒλΌμš°μ €κ°€ 직접 μ΄ν•΄ν•˜λŠ” 건 μ•„λ‹˜. 
  • React κ°€ JS μ½”λ“œλ‘œ λ³€ν™˜ν•΄μ„œ 싀행함
  • JSXλ₯Ό μ‚¬μš©ν•˜λ©΄ React μ—μ„œ HTML 을 μž‘μ„±ν•˜κ³  μΆ”κ°€ν•˜λŠ” 게 μ‰¬μ›Œμ§.

 

 

 

 

πŸ“ λ¦¬μ•‘νŠΈμ—μ„œ JSXλ₯Ό μ“Έ λ•Œ, νƒœκ·Έμ— class λ₯Ό λ„£κ³  μ‹ΆμœΌλ©΄?? 

  • className μ΄λΌκ³  μ μ–΄μ€˜μ•Όν•¨!!
  • const myElement2 = (  
      <>
          <p className="aaa">사과</p>
          <p className="bbb">κ·€</p>

          <p className="ccc">포도</p>
      </>
    );
  • κΌ­!! μ΅œμƒμœ„ μš”μ†Œκ°€ ν•œκ°œμ—¬μ•Όν•¨!! block ν˜•νƒœλ‘œ λ­”κ°€ λ¬ΆλŠ” λŠλ‚Œμž„!! κΌ­ λ­‰νƒ±μ΄λ‘œ ν•œλ²ˆμ— 움직일 수 있게 μ²˜λ¦¬ν•΄μ€˜μ•Όν•˜λŠ” λŠλ‚Œ!! 
  • λ§Œμ•½ μ΅œμƒμœ„ μš”μ†Œλ‘œ μ“Έ 게 μ „ν˜€ μ—†μœΌλ©΄ <> </> 처리 라도 ν•΄μ€˜μ•Όν•΄!! 

 

 

πŸ“ JSX μ—μ„œμ˜ ν‘œν˜„μ‹ μ‚¬μš©

  • const myElement = <h1 className="aaa">5 + 5 = {5+5}</h1>;
  • JSXμ—μ„œλŠ”    { ~~~ }    λ‘œ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•¨.
// import React from 'react';
// import { createRoot, creatElement } from 'react-dom/client';

// const myElement = React.createElement('h1', {}, 'JSX μ‚¬μš©ν•˜μ§€ μ•Šμ•˜μ–΄μš”');

import { createRoot } from 'react-dom/client';

//const myElement = <h1>JSXλ₯Ό μ‚¬μš©ν•¨</h1>;
const myElement = <h1 className="aaa">5 + 5 = {5+5}</h1>;

// μ΅œμƒμœ„ μš”μ†ŒλŠ” ν•œκ°œλ§Œ μžˆμ–΄μ•Όν•¨..
const myElement2 = ( 
    <>
        <p className="aaa">사과</p>
        <p>κ·€</p>
        <p>포도</p>
    </>
);


function Intro() {
    const name = 'μ „μš°μΉ˜';
    return (
        <>
            <h1>ν•˜μ΄λ£¨</h1>
            <p>λ‚˜λŠ” {name}μ•Ό</p>
        </>
    )
}

createRoot(document.getElementById('root')).render(
    //myElement2
    <Intro /> // λ¦¬μ—‘νŠΈμ—μ„œλŠ” μ»΄ν¬λ„ŒνŠΈλ‘œ λ„˜κΈΈμˆ˜λ„ 있음.
);

 

 

 

 


 

πŸ“ JSX ν‘œν˜„μ‹

  • ν‘œν˜„μ‹ μ•ˆμ—μ„œ 연산을 ν•  수 있음.
  • ν‘œν˜„μ‹ μ•ˆμ—μ„œ λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄μ„œ 값을 κ°€μ Έμ˜¬ μˆ˜λ„ 있음.
  • ν‘œν˜„μ‹ μ•ˆμ—μ„œ 객체λ₯Ό κΊΌλ‚΄μ™€μ„œ μ“Έ μˆ˜λ„ 있음.
  • // νƒœκ·Έμ— μ§μ ‘ style μ„ λ„£λŠ” κ²½μš°λŠ” -->  μžλ°”μŠ€ν¬λ¦½νŠΈ κ°μ²΄μ˜ ν˜•ν…Œλ‘œλ§Œ ν—ˆμš©λ¨. 
function Money() {
    const m = 5 * 1000;
    return (
        <>
            <h1>λ‚΄ μ§€κ°‘μ—λŠ”</h1>
            <p>{ getMoney(7) } 원이 μžˆμ–΄μš”.</p> 
        </>
    );
}

function getMoney(won) {
    return won * 1000;
}

function Human() {
    const kildong = {
        name : "홍길동", 
        age : "22",
        address : "μ„œμšΈ"
    }

    const a = "title";
    const myFunc = () => {
        alert("μ•ˆλ…•ν•˜μ„Έμš”");
    }

    // νƒœκ·Έμ— 직접 style 을 λ„£λŠ” κ²½μš°λŠ” -->  μžλ°”μŠ€ν¬λ¦½νŠΈ 객체의 ν˜•ν…Œλ‘œλ§Œ ν—ˆμš©λ¨. 
    const style1={ // css 속성듀에 λŒ€ν•΄μ„œλŠ” μΉ΄λ©œν‘œκΈ°λ²•μœΌλ‘œ μž‘μ„±ν•΄μ•Όλ¨.
        color : "red",
        fontSize : "small",
        backgroundColor : "yellow"
    }

    return (
        <>
            <p className={a} onClick={myFunc}>{kildong.name} 은 {kildong.age} μ„Έ 이고, {kildong.address}에 μ‚΄μ•„μš”</p>
            <button onClick={myFunc} disabled={true}>λ²„νŠΌ</button>
            <p style={style1}>μ•ˆλ…•ν•˜μ‹­λ‹ˆκΉŒ</p>
        </>
    );
}

 

 

 


 

 

πŸ“ JSX λ‚΄λΆ€μ—μ„œλŠ” if λ¬Έ 지원 μ•ˆν•¨!! 

  • 방법 1 :: if 쑰건문을 JSX외뢀에 둬야함.
  • 방법 2 :: μ‚Όν•­ ν‘œν˜„μ‹ μ‚¬μš©.
function ChkAdult(){
    const age = 30;
    let generation;
    console.log(generation); // undefined


    // 방법 1 :: JSX λ°–μ—μ„œ ifλ¬Έ 돌리기
    if( Math.floor(age / 10) >= 3 ){
        generation = Math.floor(age / 10) + "0λŒ€ 이상";
        console.log(generation);
    } 

    return ( // μ—¬κΈ° 뢀뢄이 JSX !!
        <>  {/* 방법 2 :: μ‚Όν•­μ—°μ‚°μž μ‚¬μš©ν•˜κΈ° */}
            <p>당신은 { (age > 19) ? "성인" : "λ―Έμ„±λ…„μž" } μž…λ‹ˆλ‹€. </p>
            <p>당신은 { generation }μž…λ‹ˆλ‹€. </p>
        </>
    );
}

 

 

 


좜처 : 

[μ™•μ΄ˆλ³΄ ν™ˆνŽ˜μ΄μ§€λ§Œλ“€κΈ° λ¦¬μ•‘νŠΈ 기초 유튜브 κ°•μ˜]

https://www.youtube.com/watch?v=AmBAgN0-AIU&list=PLTb3qGCzYjS2AliTIbz9eAGjZSdEQa3m1&index=14

 

 


개발 곡뢀λ₯Ό μœ„ν•œ λΈ”λ‘œκ·Έ μž…λ‹ˆλ‹€. 

였λ₯˜κ°€ μžˆλ‹€λ©΄ λŒ“κΈ€λ‘œ μ•Œλ €μ£Όμ„Έμš”! 

κ°μ‚¬ν•©λ‹ˆλ‹€.

728x90