ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • React :: Element Rendering (μ—˜λ¦¬λ¨Όλ“œ λ Œλ”λ§)
    PROGRAMMING/React 2021. 3. 20. 13:27

    Element ?

    Element λŠ” React 의 κ°€μž₯ μž‘μ€ λ‹¨μœ„λ‘œ, 화면에 ν‘œμ‹œν•  λ‚΄μš©μ„ κΈ°μˆ ν•œλ‹€.

    • λΈŒλΌμš°μ € DOM Element 와 달리, React Element λŠ” 일반 객체이닀.
    • React DOM 은 React Element 와 μΌμΉ˜ν•˜λ„λ‘ DOM 을 μ—…λ°μ΄νŠΈν•œλ‹€.
    • Component 의 "ꡬ성 μš”μ†Œ"이닀.
      Element 와 Component λŠ” λ‹€λ₯Έ κ°œλ…μ΄λ‹€. Component λŠ” λ‹€μŒμ— μžμ„Ένžˆ!
    • λΆˆλ³€κ°μ²΄μ΄λ‹€. (즉, 생성 이후에 μžμ‹/속성 λ³€κ²½ λΆˆκ°€)

     

    Element μž‘μ„±ν•˜κΈ°

    JSX λ₯Ό μ‚΄νŽ΄λ³Ό λ•Œ, μ΄λ ‡κ²Œ μž‘μ„±ν•œ 것이 λ°”λ‘œ element λ₯Ό μž‘μ„±ν•œ 것이닀.

    const element = <h1>Hello, world</h1>;

     

    DOM 에 Element λ Œλ”λ§ν•˜κΈ°

    이제 μž‘μ„±ν•œ Element λ₯Ό λ Œλ”λ§ ν•΄λ³΄μž.

    Root DOM Node

    React 둜 κ΅¬ν˜„λœ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 일반적으둜 ν•˜λ‚˜μ˜ 루트 DOM λ…Έλ“œκ°€ 있고, κ·Έ 루트 DOM λ…Έλ“œ μ•ˆμ— λ“€μ–΄κ°€λŠ” λͺ¨λ“  μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό React DOM μ—μ„œ κ΄€λ¦¬ν•œλ‹€.

    만일 μ—¬λŸ¬ React 앱을 ν†΅ν•©ν•˜λ € ν•œλ‹€λ©΄ 그만큼 λ§Žμ€ 수의 λ…λ¦½λœ 루트 DOM λ…Έλ“œκ°€ μžˆμ„ 수 μžˆλ‹€.

     

    ReactDOM.render()

    React Element λ₯Ό 루트 DOM λ…Έλ“œμ— λ Œλ”λ§ν•˜λ €λ©΄ ReactDOM.render() 둜 μ „λ‹¬ν•˜λ©΄ λœλ‹€.

    const element = <h1>Hello, world</h1>;
    ReactDOM.render(element, document.getElementById('root'));

     

    λ Œλ”λ§ 된 μ—˜λ¦¬λ¨ΌνŠΈ μ—…λ°μ΄νŠΈν•˜κΈ°

    μ•žμ„œ λ§ν–ˆλ“―, React Element λŠ” λΆˆλ³€κ°μ²΄μ΄λ‹€.

    ν•œ μ˜ν™”μ˜ ν•œ ν”„λ ˆμž„. μ •ν•΄μ Έ μžˆλŠ” 'μž₯λ©΄'을 λ³΄μ—¬μ£ΌλŠ” 것과 κ°™λ‹€.

     

    λ”°λΌμ„œ κ°€μž₯ κ°„λ‹¨νžˆ UI λ₯Ό μ—…λ°μ΄νŠΈ (μ—˜λ¦¬λ¨ΌνŠΈ μ—…λ°μ΄νŠΈ) ν•˜λŠ” 방법은 λ³€κ²½ν•˜λŠ” 사항에 λŒ€ν•œ Element λ₯Ό μƒˆλ‘œ μƒμ„±ν•˜κ³  이λ₯Ό ReactDOM.render() 에 μ „λ‹¬ν•˜λŠ” 것이닀.

     

    React 곡식 λ¬Έμ„œμ˜ μ‹œκ³„ 예제λ₯Ό 톡해 μ‚΄νŽ΄λ³΄λ©΄,

    function tick() {
      const element = (	//ν•¨μˆ˜ 호좜 μ‹œλ§ˆλ‹€ element μƒˆλ‘œ 생성
        <div>
          <h1>Hello, world!</h1>
          <h2>It is {new Date().toLocaleTimeString()}.</h2>
        </div>
      );
      ReactDOM.render(element, document.getElementById('root'));	//μƒˆλ‘œ μƒμ„±ν•œ element λ Œλ”λ§
    }
    
    setInterval(tick, 1000);

    μ΄λ ‡κ²Œ ν•  수 μžˆλ‹€.

    λ³€κ²½ μ‚¬ν•­λ§Œ μ—…λ°μ΄νŠΈν•˜κΈ°

    μœ„μ˜ μ½”λ“œλ§Œ 보면 Hello world λΆ€ν„° μ‹œκ°„ κΉŒμ§€ λͺ¨λ‘ λ Œλ”λ§μ„ ν•˜λŠ” 것인가? ν•˜λŠ” 의문이 생길 수 μžˆμ§€λ§Œ,

    React λŠ” 기쑴의 DOM κ³Ό λΉ„κ΅ν•˜μ—¬ λ³€κ²½ μ‚¬ν•­λ§Œ μ—…λ°μ΄νŠΈν•œλ‹€κ³  ν–ˆμ—ˆλ‹€.

     

    κ·ΈλŸ¬λ‹ˆ, 개발자 도ꡬλ₯Ό 톡해 μœ„μ˜ μ½”λ“œ 싀행을 보면 λ”± μ‹œκ°„λ§Œ λ°”λ€λ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.

    즉, 이전과 λ‹¬λΌμ§€λŠ” {new Date().toLocaleTimeString()} λΆ€λΆ„λ§Œ μ—…λ°μ΄νŠΈ λœλ‹€λŠ” 것을 확인할 수 μžˆλ‹€.

     

     

    이것은 Element λ₯Ό μ—…λ°μ΄νŠΈν•˜λŠ” ν•œ 가지 방법이닀.

    이후에 생λͺ…μ£ΌκΈ° API , 쑰건뢀 λ Œλ”λ§μ„ 배우며 더 λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ λ Œλ”λ§μ„ ν•΄λ³΄μž.

     


    Ref.

    React 곡식 λ¬Έμ„œ ko.reactjs.org/docs/rendering-elements.html

    .

     

    'PROGRAMMING > React' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

    React :: Hook, useState, useEffect, μ‚¬μš©μž μ •μ˜ Hook  (0) 2021.03.31
    React :: 생λͺ…μ£ΌκΈ° (Lifecycle)  (0) 2021.03.21
    React :: Component, Props, State  (0) 2021.03.20
    React : JSX  (0) 2021.03.20
    React :: React μ‹œμž‘ν•˜κΈ°  (0) 2021.03.20

    λŒ“κΈ€

Designed by Tistory.