PROGRAMMING/React

React :: Element Rendering (μ—˜λ¦¬λ¨Όλ“œ λ Œλ”λ§)

\b\t 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

.