[React] What's React?

GURIยท2021๋…„ 10์›” 13์ผ
1

React

๋ชฉ๋ก ๋ณด๊ธฐ
1/4
post-thumbnail

๐Ÿ˜ถ What's React?

  • React๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค (UI)๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

  • ์ฆ‰, ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ์œ„์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญ์„ ํ•˜๋Š” ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ๊ทธ ์ด๋ฒคํŠธ์— ๋งž๊ฒŒ ๋ฐ˜์‘ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ง„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ !

    • ์›น UI๋ฅผ ๋งŒ๋“œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    • ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ์ด๋ฃจ์–ด์ง„ UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

์ฃผ์š” ํŠน์ง• 3๊ฐ€์ง€

๐Ÿ”ด 1. JSX

  • JSX๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์—์„œ HTML์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ฌธ๋ฒ•, JavaScript๋ฅผ ํ™•์žฅํ•œ ๋ฌธ๋ฒ•
  • ์œ ์‚ฌ JavaScript์ผ ๋ฟ, JavaScript๊ฐ€ ์•„๋‹ˆ๋‹ค !!

JSX ์˜ˆ์‹œ :

import React from 'react';

function App() {
	return <h1 className="greeting">Hello!</h1>;
}

export default App;

๐Ÿ’ฅ JSX ๋ฌธ๋ฒ• ์›์น™

  1. ๊ฐ์‹ธ์ธ ์š”์†Œ
    • ์ปดํฌ๋„ŒํŠธ์— ์—ฌ๋Ÿฌ ์š”์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋ถ€๋ชจ ์š”์†Œ ํ•˜๋‚˜๋กœ ๊ผญ ๊ฐ์‹ธ์•ผ ํ•œ๋‹ค.
import React from 'react';

function App() {
	return (
		<> {/* fragment tag */}
			<h1>Hello, React!</h1>
			<p>React is...</p>
		</>
	);
}

<></> : fragment tag

  1. class ๋Œ€์‹  className
    • JSX์—์„œ๋Š” class ๋Œ€์‹  className์œผ๋กœ ์ž‘์„ฑ
function App() {
	const text = 'React is...';

	return (
		<>
			<h1 className="title">Hello, React!</h1>
			<p>{text}</p>
		</>
	);
}
  1. ๊ผญ ํƒœ๊ทธ๋ฅผ ๋‹ซ์•„์•ผ ํ•จ!
    • HTML์—์„œ input, br ํƒœ๊ทธ๋Š” ๋‹ซ์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ, JSX์—์„œ๋Š” ๋‹ซ์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜ ๋ฐœ์ƒ!
<input type='text' name='name' />
<br />
  1. { /**/ }๋กœ ์ฃผ์„ ์‚ฌ์šฉ
{ /* ์ฃผ์„์€ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ */ }

๐ŸŸ  2. Components

  • ๋ฆฌ์•กํŠธ๋Š” ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.
  • ์ปดํฌ๋„ŒํŠธ๋ž€ ?
    • ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” UI์˜ ๋‹จ์œ„, ๊ธฐ๋Šฅ์˜ ์ตœ์†Œ ๋‹จ์œ„
  • ์ปดํฌ๋„ŒํŠธ๋Š” ์„œ๋กœ ๋…๋ฆฝ์ ์ด๊ณ  ์ž˜ ๊ณ ๋ฆฝ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์„ ๋ถ„ํ•  ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅ

๐ŸŸก 3. Virtual DOM

  • DOM?
    • Document Object Model, ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ
    • HTML ๋‹จ์œ„ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๊ฐ์ฒด๋กœ ์ƒ๊ฐํ•œ ๋ชจ๋ธ
  • DOM์˜ ๊ตฌ์กฐ๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ๋‹ค.
  • ๋งŒ์•ฝ ์–ด๋–ค DOM์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ์‹คํ–‰์‹œํ‚ฌ ๋•Œ, ๋ชจ๋“ ๊ฒŒ ๋‹ค์‹œ ์‹คํ–‰
  • ์ฆ‰, ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์ด ๋งค๋ฒˆ ์ผ์–ด๋‚œ๋‹ค.

  • ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ€์ƒ DOM์ด ๋“ฑ์žฅ
  • ๊ฐ€์ƒ DOM์€ ์‹ค์ œ DOM์˜ ์‚ฌ๋ณธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Œ
  • ๊ฐ€์ƒ DOM์€ ๋ณ€ํ™”๋ฅผ ๊ฐ€์ƒ DOM์—์„œ ๋ฏธ๋ฆฌ ์ธ์ง€ํ•ด ๋ณ€ํ™”์‹œํ‚จ๋‹ค.
  • ์‹ค์ œ DOM์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ Œ๋”๋ง๋„ ๋˜์ง€ ์•Š๊ณ  ์—ฐ์‚ฐ ๋น„์šฉ์ด ๋น„๊ต์  ์ ๋‹ค. ๋งˆ์ง€๋ง‰์— ์‹ค์ œ DOM์—๊ฒŒ ๋˜์ ธ์ฃผ์–ด, ๋ชจ๋“  ๋ณ€ํ™”๋ฅผ ํ•œ๋ฒˆ์— ๋ Œ๋”๋งํ•œ๋‹ค.
  • ๊ฐ€์ƒ DOM์€ ๋ฐ”๋€Œ์ง€ ์•Š์€ ๋ถ€๋ถ„๊ณผ ๋ฐ”๋€ ๋ถ€๋ถ„์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•ด์„œ ์—…๋ฐ์ดํŠธ ์‹œํ‚จ๋‹ค!

WHY React?

  1. ์ƒ์‚ฐ์„ฑ/์žฌ์‚ฌ์šฉ์„ฑ
    1. Component์™€ Hook ํ™œ์šฉ
  2. ํ’๋ถ€ํ•œ ์ž๋ฃŒ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    1. ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ๊ฐ€์žฅ ํ™œ๋ฐœํ•˜๊ฒŒ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™œ๋™์ด ์ด๋ค„์ง€๊ณ  ์žˆ๋‹ค.
  3. ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ฒ˜
    1. ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ React-Native์— ์ ์šฉํ•˜์—ฌ ์•ˆ๋“œ๋กœ์ด๋“œ, IOS ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

References

berkbach.com : ๊ธฐ์ดˆ๋ถ€ํ„ฐ ๋ฐฐ์šฐ๋Š” React โ€” Part 1

profile
Done is better than Perfect.

0๊ฐœ์˜ ๋Œ“๊ธ€