์ƒˆ์†Œ์‹

React

[React] 02. JSX

  • -

๐Ÿ“Œ JSX

๋ฆฌ์•กํŠธ๋Š” HTML๊ณผ ๋น„์Šทํ•œ ํ˜•์‹์˜ ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐฉ์‹์ธ JSX๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ JSX์˜ ๊ธฐ๋Šฅ๊ณผ ๊ทœ์น™๋“ค์„ ๋ฐฐ์›Œ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์ž‘์„ฑ์„ ๋•๋Š” ESLint์™€ Prettier๋„ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ I. ์ฝ”๋“œ ์ดํ•ดํ•˜๊ธฐ

src/App.js ํŒŒ์ผ์„ ์—ด์–ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

import logo from './logo.svg';
import './App.css';

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

์œ„์˜ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ดํ•ดํ•ด๋ด…์‹œ๋‹ค.


๐Ÿ“š 1. import ๊ตฌ๋ฌธ

import logo from './logo.svg';
import './App.css';
  •  import ๊ตฌ๋ฌธ์€ ํŠน์ • ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ
  • ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค ๋ธŒ๋ผ์šฐ์ €์— ์—†๋Š”, Node.js์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ

๐Ÿ“š 2. ๋ฒˆ๋“ค๋Ÿฌ(Bundler)

  • ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฒˆ๋“ค๋Ÿฌ(bundler)๋ฅผ ์‚ฌ์šฉ
  • ๋ฒˆ๋“ค(bundle)์€ ํŒŒ์ผ์„ ๋ฌถ์–ด์„œ ์—ฐ๊ฒฐํ•œ๋‹ค๋Š” ๊ฒƒ
  • ์›นํŒฉ, Parcel, browserify ๋“ฑ์˜ ๋„๊ตฌ๋“ค์ด ์žˆ์ง€๋งŒ, ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ฃผ๋กœ ์›นํŒฉ์„ ๋‹ค๋ฃธ
  • ๋ฒˆ๋“ค๋Ÿฌ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด import๋กœ ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™”์„ ๋•Œ ๋ชจ๋“ˆ์„ ๋ชจ๋‘ ํ•ฉ์ณ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด ์คŒ
  • ์ตœ์ ํ™” ๊ณผ์ •์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์Œ

๐Ÿ“š 3. ๋กœ๋”(Loader)

  • ์›นํŒฉ์„ ์ด์šฉํ•˜๋ฉด SVG ํŒŒ์ผ๊ณผ CSS ํŒŒ์ผ๋„ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ํŒŒ์ผ๋“ค์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด ๋กœ๋”(loader)
  • CSS ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” css-loader, ์›น ํฐํŠธ๋‚˜ ๋ฏธ๋””์–ด ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” file-loader ๋“ฑ์ด ์žˆ์Œ
  • ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ–ˆ๋˜ create-react-app์ด ์›นํŒฉ์˜ ๋กœ๋”๋ฅผ ์ž๋™์œผ๋กœ ์„ค์น˜

๐Ÿ“š 4. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}
  • ์ด ์ฝ”๋“œ๋Š” function ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ App์ด๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ฆ
  • ์ด๋Ÿฌํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ผ๊ณ  ํ•จ
  • ํ”„๋กœ์ ํŠธ์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋ฉด ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์„ ๋ณด์ž„

๐Ÿ“Œ II. JSX๋ž€?

์œ„์— ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” HTML ๋ฌธ๋ฒ•๊ณผ ๋น„์Šทํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฝ”๋“œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ™•์žฅ ๋ฌธ๋ฒ•์ธ JSX์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ๋ฒˆ๋“ค๋ง๋˜๋Š” ๊ณผ์ •์—์„œ ๋ฐ”๋ฒจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ฐ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ˜•ํƒœ์˜ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

function App() {
  return (
    <div>
      Hello <b>react</b>
    </div>
  );
}
function App() {
  return React.createElement("div", null, "Hello", React.createElement("b", null, "react"));
}

JSX ์ฝ”๋“œ๋Š” ์•„๋ž˜์˜ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. React.createElement๋ฅผ ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง ๋•Œ๋งˆ๋‹ค ์ž…๋ ฅํ•˜๋Š” ์ผ์€ ๋น„ํšจ์œจ์ ์ด๋ผ JSX๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


๐Ÿ“Œ III. JSX์˜ ์žฅ์ 

๐Ÿ“š 1. ๋ณด๊ธฐ ์‰ฝ๊ณ  ์ต์ˆ™ํ•˜๋‹ค

HTML ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜์—ฌ ์ผ์ผ์ด ์š”์†Œ๋“ค์„ ๋งŒ๋“ค ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“š 2. ๋”์šฑ ๋†’์€ ํ™œ์šฉ๋„

div๋‚˜ span๊ณผ ๊ฐ™์€ HTML ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์•ž์œผ๋กœ ์‚ฌ์šฉํ•  ์ปดํฌ๋„ŒํŠธ๋„ JSX ์•ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“Œ IV. JSX ๋ฌธ๋ฒ•

๐Ÿ“š 1. ๊ฐ์‹ธ์ธ ์š”์†Œ

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

function App() {
  return (
    <div>
      <h1>๋ฆฌ์•กํŠธ ์•ˆ๋…•!</h1>
      <h2>์ž˜ ์ž‘๋™๋˜๋‹ˆ?</h2>
    </div>
  );
}

 

<div> ํƒœ๊ทธ ์™ธ์—๋„, ๋ฆฌ์•กํŠธ v16 ์ด์ƒ๋ถ€ํ„ฐ ๋„์ž…๋œ Fragment <Fragment> ํƒœ๊ทธ๋‚˜, Fragment์˜ ๋‹ค๋ฅธ ํ˜•ํƒœ์ธ <></>์œผ๋กœ ๊ฐ์Œ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“š 2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„

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

function App() {
  const name = "๋ฆฌ์•กํŠธ";
  return (
    <div>
      <h1>๋ฆฌ์•กํŠธ ์•ˆ๋…•!</h1>
      <h2>์ž˜ ์ž‘๋™๋˜๋‹ˆ?</h2>
    </div>
  );
}

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ES6์˜ ๋ณ€์ˆ˜ ์„ค์ •๊ณผ ๊ด€๋ จ๋œ ๋‚ด์šฉ์€ ๋‹ค์Œ์˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”

https://jiyesmoon.tistory.com/2?category=967739

 

[JavaScript] 01. INTRODUCTION ์†Œ๊ฐœ

I. INTRODUCTION TO JAVASCRIPT # ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ # ์ž๋ฃŒํ˜•   # ์—ฐ์‚ฐ์ž   # ๋ณ€์ˆ˜   # ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด 1. What is JavaScript? JavaScript๋Š” ์›น ๊ฐœ๋ฐœ์˜ ํ•ต์‹ฌ์œผ๋กœ ์›น ์‚ฌ์ดํŠธ์— ์›€์ง์ž„์„ ์ฃผ๋Š” ๋™์  ..

jiyesmoon.tistory.com


๐Ÿ“š 3. if๋ฌธ ๋Œ€์‹  ์กฐ๊ฑด๋ถ€ ์—ฐ์‚ฐ์ž

JSX ๋‚ด๋ถ€์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹์—์„œ if ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. JSX ๋ฐ–์—์„œ if ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์ „์— ๊ฐ’์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ { } ์•ˆ์— ์กฐ๊ฑด๋ถ€ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

function App() {
  const name = "๋ฆฌ์•กํŠธ";
  return (
    <div>
      {
        name === "๋ฆฌ์•กํŠธ" ? (
          <h1>๋ฆฌ์•กํŠธ ์ž‘๋™ ์ค‘</h1>
        ) : (
          <h2>๋ฆฌ์•กํŠธ๊ฐ€ ์•„๋‹˜</h2>
        )
        }           
    </div>
  );
}

์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด "๋ฆฌ์•กํŠธ ์ž‘๋™ ์ค‘"์ด๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. const name์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด "๋ฆฌ์•กํŠธ๊ฐ€ ์•„๋‹˜"์ด๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ“š 4. AND ์—ฐ์‚ฐ์ž(&&)๋ฅผ ์‚ฌ์šฉํ•œ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง

ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ๋งŒ ๋‚ด์šฉ์„ ๋ณด์—ฌ์ฃผ๊ณ , ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋ Œ๋”๋ง ํ•˜์ง€ ์•Š์•„์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์€ ์กฐ๊ฑด๋ถ€ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

function App() {
  const name = "๋ฆฌ์•กํŠธ";
  return (
    <div>
      {name == "๋ฆฌ์•กํŠธ" && <h1>๋ฆฌ์•กํŠธ์ž…๋‹ˆ๋‹ค.</h1>} 
    </div>
  );
}

์•ž์„  ์ฝ”๋“œ๋Š” && ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ์—์„œ false๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ๋Š” null๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์•„๋ฌด๊ฒƒ๋„ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด์™€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ falsyํ•œ ๊ฐ’์ธ 0์€ ์˜ˆ์™ธ์ ์œผ๋กœ ํ™”๋ฉด์— ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ“š 5. undefined ๋Š” ๋ Œ๋”๋งํ•˜์ง€ ์•Š๊ธฐ

๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ํ•จ์ˆ˜์—์„œ๋Š” null๊ณผ ๋‹ฌ๋ฆฌ undefined๋งŒ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋ Œ๋”๋งํ•˜๋Š” ์ƒํ™ฉ์„ ๋งŒ๋“ค๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. OR(||)์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด undefined์ผ ๋•Œ์˜ ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import './App.css';

function App() {
  const name = undefined;
  return name || "๊ฐ’์ด undefined์ž…๋‹ˆ๋‹ค."
}

export default App;

๋‹จ JSX ๋‚ด๋ถ€์—์„œ undefined๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.


๐Ÿ“š 6. ์ธ๋ผ์ธ ์Šคํƒ€์ผ๋ง

๋ฆฌ์•กํŠธ์—์„œ DOM ์š”์†Œ์— ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ๋•Œ๋Š” ๋ฌธ์ž์—ด ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ€์ผ ์ด๋ฆ„ ์ค‘์—์„œ background-color ์ฒ˜๋Ÿผ -๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ -๋ฅผ ์—†์• ๊ณ  ์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•(camelCase)์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ backgroundColor, fontSize, fontWeight ๋“ฑ๊ณผ ๊ฐ™์ด ์ ํ˜€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

function App() {
  const name = "๋ฆฌ์•กํŠธ";
  const style = {
    backgroundColor: 'black',
    color: 'aqua',
    fontSize: '48px',
    fontWeight: 'bold',
    padding: 16
  };
  return <div style={style}>{name}</div>
}

๐Ÿ“š 7. class ๋Œ€์‹  className

HTML์—์„œ CSS ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” <div class="myClass"></div>์™€ ๊ฐ™์ด class๋ผ๋Š” ์†์„ฑ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ JSX์—์„œ๋Š” class๊ฐ€ ์•„๋‹Œ className์œผ๋กœ ์„ค์ •ํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์—๋Š” class๋กœ CSS ํด๋ž˜์Šค๋ฅผ ์„ค์ •ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์ง€๋งŒ, ๋ฆฌ์•กํŠธ v16์ด์ƒ๋ถ€ํ„ฐ๋Š” class๋ฅผ className์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๊ณ  ๊ฒฝ๊ณ ๋ฅผ ๋„์›๋‹ˆ๋‹ค.


๐Ÿ“š 8. ๊ผญ ๋‹ซ์•„์•ผ ํ•˜๋Š” ํƒœ๊ทธ

HTML์—์„œ๋Š” <input>๊ณผ ๊ฐ™์ด ํƒœ๊ทธ๋ฅผ ๋‹ซ์ง€ ์•Š์€ ์ฑ„๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ JSX์—์„œ ํƒœ๊ทธ๋ฅผ ๋‹ซ์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

function App() {
  const name = "๋ฆฌ์•กํŠธ";
  return (
    <>
      <div className="react">{name}</div>
      <input></input>
    </>
  )
}

 

ํƒœ๊ทธ ์‚ฌ์ด์— ๋ณ„๋„์˜ ๋‚ด์šฉ์ด ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ <input />๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํƒœ๊ทธ๋ฅผ self-closing ํƒœ๊ทธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค/ ํƒœ๊ทธ ์„ ์–ธ๊ณผ ๋™์‹œ์— ๋‹ซ์„ ์ˆ˜ ์žˆ๋Š” ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.

function App() {
  const name = "๋ฆฌ์•กํŠธ";
  return (
    <>
      <div className="react">{name}</div>
      <input />
    </>
  )
}

๐Ÿ“š 9. ์ฃผ์„

JSX ๋‚ด๋ถ€์—์„œ ์ฃผ์„์„ ์ž‘์„ฑํ•  ๋•Œ์—๋Š” {/*   */}์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์—ฌ๋Ÿฌ ์ค„์— ์ฃผ์„์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ ํƒœ๊ทธ๋ฅผ ์—ฌ๋Ÿฌ ์ค„๋กœ ์ž‘์„ฑํ•  ๋•Œ๋Š” ๊ทธ ๋‚ด๋ถ€์—์„œ //์™€ ๊ฐ™์€ ํ˜•ํƒœ์˜ ์ฃผ์„๋„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“Œ V. ESLint์™€ Prettier ์ ์šฉํ•˜๊ธฐ

ESLint๋Š” ๋ฌธ๋ฒ• ๊ฒ€์‚ฌ ๋„๊ตฌ์ด๊ณ , Prettier๋Š” ์ฝ”๋“œ ์Šคํƒ€์ผ ์ž๋™ ์ •๋ฆฌ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋‘ ๋„๊ตฌ ๋ชจ๋‘ VS Code ๋งˆ์ผ“ ํ”Œ๋ ˆ์ด์Šค์—์„œ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“š 1. ESLint

ESLint๋Š” ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ ๋ฐœ์ƒ๋œ ์‹ค์ˆ˜์— ๋Œ€ํ•œ ์—๋Ÿฌ ๋ฐ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์—๋””ํ„ฐ์—์„œ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๋ก์ƒ‰ ์ค„์ด ๊ทธ์–ด์ง„ ์ฝ”๋“œ๋Š” ๋ฌด์‹œํ•ด๋„ ๋˜์ง€๋งŒ, ๋นจ๊ฐ„์ƒ‰ ์ค„์ด ๊ทธ์–ด์ง„ ์ฝ”๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ๊ณ ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—๋””ํ„ฐ ํ•˜๋‹จ์— ๋œจ๋Š”  ๋ฌธ์ œ ํƒญ์€ VS Code ์ƒ๋‹จ ๋ฉ”๋‰ด์—์„œ ๋ณด๊ธฐ > ๋ฌธ์ œ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“š 2. Prettier 

JSX๋Š” ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ๋“ค์—ฌ ์“ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. VS code์—์„œ F1์„ ๋ˆ„๋ฅด๊ณ  format์ด๋ผ๊ณ  ์ž…๋ ฅํ•œ ๋‹ค์Œ enter๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. Prettier๊ฐ€ ์ž๋™์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•ด์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Prettier๋Š” ์ฝ”๋“œ๋ฅผ ์ •๋ ฌํ•ด์ค„ ๋ฟ ์•„๋‹ˆ๋ผ ์„ธ๋ฏธ์ฝœ๋ก ์ด ๋น ์ง„ ๊ณณ์—๋Š” ์ถ”๊ฐ€๋˜๊ณ  ์ž‘์€๋”ฐ์˜ดํ‘œ๋ฅผ ํฐ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

 

 

 

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.