๊ด€๋ฆฌ ๋ฉ”๋‰ด

ruriruriya

[React] ๋ฆฌ์•กํŠธ - JSX๋ž€? ๋ณธ๋ฌธ

๐Ÿ–Œ๏ธWeb/React

[React] ๋ฆฌ์•กํŠธ - JSX๋ž€?

๋ฃจ๋ฆฌ์•ผใ…‘ 2024. 4. 23. 16:00
๋ฐ˜์‘ํ˜•

JSX๋Š” JavaScript XML์˜ ์•ฝ์ž๋กœ, HTML๊ณผ ์œ ์‚ฌํ•œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ JavaScript ์ฝ”๋“œ ๋‚ด์—์„œ UI ์š”์†Œ๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” React์˜ ํ™•์žฅ ๋ฌธ๋ฒ•์ด๋‹ค.

JXS๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ UI ๊ตฌ์กฐ๋ฅผ ๋ณด๋‹ค ์ง๊ด€์ ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ๊ฐ€๋…์„ฑ๊ณผ ์ƒ์‚ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

JSX์˜ ํŠน์ง•

  1. ํƒœ๊ทธ ๊ตฌ๋ฌธ ์‚ฌ์šฉ: HTML๊ณผ ๋น„์Šทํ•œ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹ ํฌํ•จ: ์ค‘๊ด„ํ˜ธ {}๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JS ํ‘œํ˜„์‹์„ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ์†์„ฑ ์ง€์ •: HTML๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์†์„ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, JavaScript ํ‘œํ˜„์‹๋„ ์†์„ฑ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์ž์‹ ์ •์˜: ํƒœ๊ทธ ์•ˆ์— ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋‚˜ HTML ์š”์†Œ๋ฅผ ์ž์‹์œผ๋กœ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.

 

JSX ์˜ˆ์‹œ

App ์ปดํฌ๋„ŒํŠธ๋Š” title๊ณผ children ์†์„ฑ์„ ๋ฐ›์•„ ๋ Œ๋”๋งํ•œ๋‹ค.

import React from 'react';

function App(props) {
  return (
    <div>
      <h1>{props.title}</h1>
      <p>{props.children}</p>
    </div>
  );
}

export default function Main() {
  return (
    <App title="Hello, JSX!">
      JSX๋Š” JavaScript๋ฅผ ํ™•์žฅํ•œ ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค.
    </App>
  );
}

 

JSX์˜ ์ž‘๋™ ์›๋ฆฌ

JSX ์ฝ”๋“œ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง์ ‘ ์‹คํ–‰๋  ์ˆ˜ ์—†์–ด์„œ Babel ๊ฐ™์€ ํŠธ๋žœ์ŠคํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ฐ˜ JavaScript ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

์œ„์— ์ฝ”๋“œ App ์ปดํฌ๋„ŒํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€ํ™˜๋œ๋‹ค.

function App(props) {
  return React.createElement(
    "div",
    null,
    React.createElement("h1", null, props.title),
    React.createElement("p", null, props.children)
  );
}

 

JSX ์ฃผ์˜์‚ฌํ•ญ

1. class ๋„ฃ์„ ๋• className ์ด๋ผ๊ณ  ํ•ด์•ผ ํ•œ๋‹ค.

function App() {
	return(
    	<div className="App">
        	<div className="black-nav>
            	<h4>๋ธ”๋กœ๊ทธ</h4>
            </div>        	
        </div>
    );
}

 

2. ๋ณ€์ˆ˜ ๋„ฃ์„ ๋•Œ์™€ ๋ฐ์ดํ„ฐ๋ฐ”์ธ๋”ฉ(์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์™€์„œ html ์‚ฌ์ด์— ๋ณด์—ฌ์ค„ ){์ค‘๊ด„ํ˜ธ}

function App() {

	let post = '๊ฐ•๋‚จ ์šฐ๋™ ๋ง›์ง‘';

	return(
    	<div className="App">
        	<div className="black-nav">
            	<h4 id={post}>๋ธ”๋กœ๊ทธ</h4>
            </div>
            <h4>{post}</h4>
        </div>
    );
}

 

3. style ๋„ฃ์„ ๋• style={{์Šคํƒ€์ผ๋ช…:'๊ฐ’', ์Šคํƒ€์ผ๋ช…:'๊ฐ’' }}

์ด ๋•Œ, ์นด๋ฉœ์ผ€์ด์Šค๋กœ ์Šคํƒ€์ผ๋ช…์„ ์จ์ค˜์•ผ ํ•จ.
(-)๋Œ€์‹œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ.

function App() {

	let post = '๊ฐ•๋‚จ ์šฐ๋™ ๋ง›์ง‘';

	return(
    	<div className="App">
        	<div className="black-nav">
            	<h4 style={{color:'red', fontSize : '16px'}}>๋ธ”๋กœ๊ทธ</h4>
            </div>
            <h4>{post}</h4>
        </div>
    );
}

 

๋ฐ˜์‘ํ˜•