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

[React] 6. Rendering Elements

category Web/React 2023. 11. 5. 12:01

Elements

  • ๋ฆฌ์•กํŠธ ์•ฑ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋ธ”๋ก๋“ค
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ์กด์žฌ.
  • ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง์„ ์œ„ํ•ด ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๊ฐ€ createElement๋ฅผ ํ†ตํ•ด ์—˜๋ฆฌ๋จผํŠธ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

Elements์˜ ํŠน์ง•

  • immutable : ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” (๋ถˆ๋ณ€์˜)
  • ์—˜๋ฆฌ๋จผํŠธ ์ƒ์„ฑ ํ›„์—๋Š” children์ด๋‚˜ attributes๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค.

Root DOM Node

  • ๋ชจ๋“  ๋ฆฌ์•กํŠธ ์•ฑ์€ ๋‹จ ํ•˜๋‚˜์˜ Root DOM Node๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.
<div id="root"></div>

  • ์—˜๋ฆฌ๋จผํŠธ ์ƒ์„ฑ ํ›„ root div์— ๋ Œ๋”๋ง
  • ๋ Œ๋”๋ง : ReactDOM.render() ์‚ฌ์šฉ
const element = <h1>์•ˆ๋…• ๋ฆฌ์•กํŠธ!</h1>;
ReactDOM.render(**element**, **document.getElementById('root')**);

=> ReactDOM.rentder(A, B); : A๋ฅผ B์œ„์น˜์— ๋ Œ๋”๋ง

 

 

์‹œ๊ณ„ ๋งŒ๋“ค๊ธฐ

Clock.jsx

import React from "react";

function Clock(props) {
  return (
    <div>
      <h1>์•ˆ๋…•, ๋ฆฌ์•กํŠธ!</h1>
      <h2>ํ˜„์žฌ์‹œ๊ฐ„์€ {new Date().toLocaleTimeString()} ์ด์•ผ.</h2>
    </div>
  );
}

export default Clock;

index.js

import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import reportWebVitals from "./reportWebVitals";

import Clock from "./chapter_04/Clock";

const root = ReactDOM.createRoot(document.getElementById("root"));
setInterval(() => {
  root.render(
    <React.StrictMode>
      <Clock />
    </React.StrictMode>
  );
}, 1000);

reportWebVitals();

 

 

'Web > React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[React] 6. Components and Props  (0) 2023.11.05
[React] Error: react_dom_client__WEBPACK_IMPORTED_MODULE_1__.render is not a function  (0) 2023.11.05
[React] Error: Already included file name  (0) 2023.11.05
[React] 4. JSX  (0) 2023.11.05
[React] 3. ๋ฆฌ์•กํŠธ ์‹œ์ž‘ํ•˜๊ธฐ  (0) 2023.11.04