๐Ÿ“–[React]Rendering Elements

ํ˜ฑยท2022๋…„ 7์›” 7์ผ

React

๋ชฉ๋ก ๋ณด๊ธฐ
4/28

๐Ÿ’— Element

โœ Element๋ž€?

๋ฌผ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์„ฑ๋ถ„,

๐ŸŸก ๋ฆฌ์•กํŠธ ์•ฑ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋ธ”๋Ÿญ๋“ค,
๐ŸŸก ํ™”๋ฉด์—์„œ ๋ณด์ด๋Š” ๊ฒƒ๋“ค์„ ๊ธฐ์ˆ ,
๐ŸŸก ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ์กด์žฌ

React Element๋Š” Dom Element์˜ ๊ฐ€์ƒ์ ์ธ ๊ฒƒ!

React Element๋Š” ์‹ค์ œ ์šฐ๋ฆฌ๊ฐ€ ๋ณด๋Š” Dom Element๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋จ

โœReact ํŠน์ง•

๋ถˆ๋ณ€์„ฑ, Elements ์ƒ์„ฑ ํ›„์—๋Š” Children, attributes๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค.
(๊ตฌ์–ด์ ธ ๋‚˜์˜จ ๋ถ•์–ด๋นต์˜ ์† ๋‚ด์šฉ์€ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Œ!, ์™„์„ฑ๋œ ๋ถ•์–ด๋นต = elements)

๋”ฐ๋ผ์„œ, ๋ณ€ํ™”๋ฅผ ํ•˜๋ ค๋ฉด, Element๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•ด์•ผ ํ•จ!

โœ ์ฝ”๋“œ ์˜ˆ์‹œ

const element = <h1>Hello, World!</h1>; 
//๋Œ€์ž… ์—ฐ์‚ฐ์ž ์™ผ์ชฝ ๋ถ€๋ถ„์˜ ์ด๋ฆ„์ด element์ž„ 
{
 	type: 'button', //html ํƒœ๊ทธ 
    props: {
    	className : 'bg-green',
        children : {
        	type: 'b',
            props: {
            	children: 'Hello, Element!'
            	   }
          }
}

//์œ„์˜ element๊ฐ€ ์‹ค์ œ๋กœ ๋ Œ๋”๋ง ๋œ๋‹ค๋ฉด...? 
  
  <button class = 'bg-green'>
    <b>
      Hello, Element!
    </b>
 </botton>
  
  
  {
    type: Button,
    props: {
      color: 'green',
      children: 'ํ™•์ธ'
    }
  }
  

โœ Element Rendering

= virtual Dom์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ

const element = <h1> ํ•˜์ด! </h1>
ReactDOM.render(element, document.getElementById('root'));

โœ Rendering๋œ Element ์—…๋ฐ์ดํŠธ

= Element ๋‹ค์‹œ ์ƒ์„ฑํ•ด์„œ ๋ฐ”๊ฟ”์น˜๊ธฐํ•˜๋Š” ๊ฒƒ

function tick() {
  const element=(
    <div>
      <h1>์•ˆ๋…•! </h1>
      <h2> ํ˜„์žฌ ์‹œ๊ฐ„: {new Date().toLocalTimeString()}</h2>
    </div>
  );
  
  ReactDOM.render(element, document.getElementById('root'));
}

setInterval(tick, 1000); 
//tick ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค element๊ฐ€ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ ธ์„œ ๋ฐ”๊ฟ”์น˜๊ธฐ ๋จ. 
// ์ƒˆ๋กœ์šด element๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ๊ธฐ์กด element์™€ ๋ณ€๊ฒฝ๋˜๋ฉด์„œ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒƒ.
profile
new blog: https://hae0-02ni.tistory.com/

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