JSX๋ž€?

2023. 8. 14. 16:09ใ†Study_Develop/React

๋ฐ˜์‘ํ˜•

JSX ๋ž€?

 

- JSX(JavaScript XML)๋Š” js ์— xml์„ ์ถ”๊ฐ€ํ•œ ํ™•์žฅ ๋ฌธ๋ฒ•์ด๋‹ค.

 

- JSX๋Š” ๋ฆฌ์•กํŠธ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ๊ณต์‹์ ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.

 

- ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋ฐ”๋ฒจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ฐ˜ jsํ˜•ํƒœ์˜ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

 

// ์‹ค์ œ ์ž‘์„ฑํ•  JSX ์˜ˆ์‹œ
function App() {
	return (
      <h1>Hello, GodDaeHee!</h1>
    );
}

// ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด, ๋ฐ”๋ฒจ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํ•ด์„ํ•˜์—ฌ ์ค€๋‹ค.
function App() {
	return React.createElement("h1", null, "Hello, GodDaeHee!");
}

 

- JSX๋Š” ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ HTML์„ ๋™์‹œ์— ์ž‘์„ฑํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๋‹ค.

 

JSX ๋ฌธ๋ฒ•

 

1. ๋ฐ˜๋“œ์‹œ ๋ถ€๋ชจ ์š”์†Œ ํ•˜๋‚˜๊ฐ€ ๊ฐ์‹ธ๋Š” ํ˜•ํƒœ์—ฌ์•ผ ํ•œ๋‹ค.

 

 - Virtual DOM์—์„œ ์ปดํฌ๋„ŒํŠธ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•  ๋•Œ ํšจ์œจ์ ์œผ๋กœ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€๋Š” ํ•˜๋‚˜์˜ DomํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค๋Š” ๊ทœ์น™์ด ์žˆ๋‹ค.

 

2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹

 

- JSX ์•ˆ์—์„œ๋„ JSํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹์„ ์ž‘์„ฑํ•˜๋ ค๋ฉด JSX๋‚ด๋ถ€์—์„œ ์ฝ”๋“œ๋ฅผ {}๋กœ ๊ฐ์‹ธ์ฃผ๋ฉด ๋œ๋‹ค.

 

- ์œ ํšจํ•œ ๋ชจ๋“  JSํ‘œํ˜„์‹์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

 

3. if(for ๋ฌธ) ๋Œ€์‹  ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ

 

- if ๊ตฌ๋ฌธ๊ณผ for ๋ฃจํ”„๋Š” jsํ‘œํ˜„์‹์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— jsx ๋‚ด๋ถ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

- ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ฑด๋ถ€์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ Œ๋”๋ง ์‹œ jsx์ฃผ๋ณ€ ์ฝ”๋“œ์—์„œ if๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, {}์•ˆ์—์„œ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

3.1 ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

 

function App() {
	let desc = '';
	const loginYn = 'Y';
	if(loginYn === 'Y') {
		desc = <div>GodDaeHee ์ž…๋‹ˆ๋‹ค.</div>;
	} else {
		desc = <div>๋น„ํšŒ์› ์ž…๋‹ˆ๋‹ค.</div>;
	}
	return (
		<>
			{desc}
		</>
	);
}

 

3.2 ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ

 

function App() {
	const loginYn = 'Y';
	return (
		<>
			<div>
				{loginYn === 'Y' ? (
					<div>GodDaeHee ์ž…๋‹ˆ๋‹ค.</div>
				) : (
					<div>๋น„ํšŒ์› ์ž…๋‹ˆ๋‹ค.</div>
				)}
			</div>
		</>
	);
}

 

3.3 AND ์—ฐ์‚ฐ์ž (&&) ์‚ฌ์šฉ

// ์กฐ๊ฑด์ด ๋งŒ์กฑํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์•„๋ฌด๊ฒƒ๋„ ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค.
function App() {
	const loginYn = 'Y';
	return (
		<>
			<div>
				{loginYn === 'Y' && <div>GodDaeHee ์ž…๋‹ˆ๋‹ค.</div>}
			</div>
		</>
	);
}

 

3.4 ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ ์‚ฌ์šฉ

function App() {
	const loginYn = 'Y';
	return (
		<>
			{
			  (() => {
				if(loginYn === "Y"){
				  return (<div>GodDaeHee ์ž…๋‹ˆ๋‹ค.</div>);
				}else{
				  return (<div>๋น„ํšŒ์› ์ž…๋‹ˆ๋‹ค.</div>);
				}
			  })()
			}
		</>
	);
}

 

4. Ract DOM์€ HTML ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ์ด๋ฆ„ ๋Œ€์‹  camelCase ํ”„๋กœํผํ‹ฐ ๋ช…๋ช… ๊ทœ์น™ ์‚ฌ์šฉ

 

4.1 JSX ์Šคํƒ€์ผ๋ง

 

- JSX์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์„ ์“ฐ๋ ค๋ฉด {}๋ฅผ ์จ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ๋•Œ์—๋„ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ๋„ฃ์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

- ์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. (font-size => fontSize)

 

4.2 class ๋Œ€์‹  className

 

- ์ผ๋ฐ˜ HTML์—์„œ CSS ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” class ๋ผ๋Š” ์†์„ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค.


- JSX์—์„œ๋Š” class๊ฐ€ ์•„๋‹Œ className ์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

5. JSX ๋‚ด์—์„œ ์ฃผ์„ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

 

- jsx ๋‚ด์—์„œ {/* ...*/} ์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ

 

function App() {
	return (
		<>
			{/* ์ฃผ์„์‚ฌ์šฉ๋ฐฉ๋ฒ• */}
			<div>Hello, GodDaeHee!</div>
		</>
	);
}

 

- ์‹œ์ž‘ ํƒœ๊ทธ๋ฅผ ์—ฌ๋Ÿฌ์ค„ ์ž‘์„ฑ ์‹œ์—๋Š” , ๋‚ด๋ถ€์—์„œ //์˜ ํ˜•์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

function App() {
	return (
		<>
			<div
			// ์ฃผ์„์‚ฌ์šฉ๋ฐฉ๋ฒ•
			>Hello, GodDaeHee!</div>
		</>
	);
}