๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

react.js

react.js ์ด์šฉ๋ฒ•.

๐Ÿ“Œ React & ReactDOM

React๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € React์™€ ReactDOM์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

React๋Š” View๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ณ ,ReactDOM์€ UI๋ฅผ ์‹ค์ œ๋กœ ๋ธŒ๋ผ์šฐ์ €์— ๋ Œ๋”๋ง(์ปดํ“จํ„ฐ์— ๊ทธ๋ ค์คŒ) ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š”  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

 

React ์™€ ReactDOM์€ ์•„๋ž˜์™€ ๊ฐ™์€ CDN(Cotnent Delivery Network) ๋งํฌ ์ „์†ก ๋ฐฉ์‹์œผ๋กœ import ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. 

<script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>

 

๐Ÿ“Œ JSX

jsx๋Š” javascript ๋ฅผ ํ™•์žฅํ•œ ๋ฌธ๋ฒ•์œผ๋กœ์„œ, html tag ํ˜•์‹์„ ์ด์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. 

// JSX ๋ฐฉ์‹
const element = (
  <h1 className="greeting">
    Hello, world!
  </h1>
);

// javascript ๋ฐฉ์‹
const element = React.createElement(
  'h1',
  {className: 'greeting'},
  'Hello, world!'
);

ํ•˜์ง€๋งŒ jsx ๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์™„๋ฒฝํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•์ด ์•„๋‹ˆ๊ธฐ์—, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋กœ์˜ ๋ณ€ํ™˜์ด ํ•„์š”ํ•˜๋‹ค. 

์ด๋ฅผ ์œ„ํ•ด BABEL์ด ํ•„์š”ํ•˜๋‹ค. 

 

๐Ÿ“Œ BABEL

babel ์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•ด์„์ด ๋ถˆ๊ฐ€ํ•œ ์ฝ”๋“œ๋ฅผ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด React, ReactDOM์—์„œ์™€ ๊ฐ™์ด CDN์„ ์ด์šฉํ•˜์—ฌ ์ถ”๊ฐ€ํ•ด ์ค€๋‹ค.

<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">

 

๋‹ค์Œ์€ ๋…ธ๋งˆ๋“œ์ฝ”๋” ์›น ์„œ๋น„์Šค ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ์ด๋‹ค.

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Junsung`s Workspace</title>
  <link href="style.css" rel="stylesheet" type="text/css" />
  <style>
    html {
      background-color: rgb(251, 188, 5);
    }
  </style>
</head>

<body>
  <!-- <script src="script.js"></script> -->
  <h1>Junsung`s Workspace </h1>
  <div id="root"></div>
  <script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
  <script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
  <script type="text/babel">
    const root = document.getElementById("root");
    function App() {
      let [counter, setCounter] = React.useState(0); // counter = 0, modifier = func // useState is a variable.
      const onClick = () => {
        setCounter(counter + 1)
      }
      return (
        <div>
          <h3>Total clicks: {counter}</h3>
          <button onClick={onClick}>Click me</button>
        </div >
      );
    }
    ReactDOM.render(<App />, root);
  </script>
</body>

</html>

 

https://ko.legacy.reactjs.org/docs/getting-started.html

'react.js' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

State.  (0) 2024.03.17
Components / Props  (0) 2024.03.16