๐ 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>
'react.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
State. (0) | 2024.03.17 |
---|---|
Components / Props (0) | 2024.03.16 |