React JS

μ™œ 가상 돔 (Virtual DOM) 이 λΉ λ₯Έμ΄μœ 

DOM κ΅¬μ‘°μƒμ˜ Node 변경점이 생기면 λ ˆμ΄μ•„μ›ƒμ„ λ§Œλ“€κ³  νŽ˜μΈνŒ…μ„ ν•˜λŠ” κ³Όμ •μ—μ„œ λ¦¬μ†ŒμŠ€κ°€ λ°œμƒλœλ‹€.
λ§Œμ•½ 30개의 λ…Έλ“œκ°€ 바뀐닀고 κ°€μ •ν•˜λ©΄ 30번의 (잠재적인) λ ˆμ΄μ•„μ›ƒ μž¬κ³„μ‚°κ³Ό 30번의 λ¦¬λžœλ”λ§μ„ μ΄ˆλž˜ν•˜λŠ”κ²ƒμ΄λ‹€.
μ΄λŠ” React λ₯Ό μ‚¬μš©ν–ˆμ„λ•Œ DOM μ‘°μž‘μ΄ μ΅œμ’…μ μΈ 결과물만 반영되기 λ•Œλ¬Έμ— λͺ¨λ“  λ³€ν™”λ₯Ό ν•˜λ‚˜λ‘œλ§Œ λ¬Άμ–΄μ„œ λ³€ν™” μ‹œν‚€λŠ” 것이닀.

즉 λΈŒλΌμš°μ €κ°€ μ—°μ‚°ν•˜λŠ” 횟수λ₯Ό μ€„μ΄λŠ”λ° 집쀑 ν•œλ‹€.

λ¬Όλ‘  μ΅œμ’… κ²°κ³Ό κ°’λ§Œ λ³€κ²½λ˜κΈ° λ•Œλ¬Έμ— ꢂ이 Virtual DOM 을 μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ λ³€ν™”λ₯Ό λ¬Άμ–΄μ„œ DOM 에 반영 μ‹œμΌœ μ£Όλ©΄ λ˜μ§€λ§Œ
Virtual DOM 은 DOM fragment λ₯Ό κ΄€λ¦¬ν•˜λŠ” 과정을 μˆ˜λ™μœΌλ‘œ ν•˜λ‚˜ν•˜λ‚˜ μž‘μ—…ν•  ν•„μš”μ—†μ΄ μžλ™ν™” ν•˜κ³  μΆ”μƒν™”ν•˜λŠ”κ²ƒ 에 μžˆλ‹€.
μ΄λŸ¬ν•œ 뢀뢄듀을 μžλ™ν™” ν•΄μ£ΌλŠ” 편의λ₯Ό μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— μΆ©λΆ„νžˆ 맀λ ₯적이고 κ°•λ ₯ν•œ λ·° 라이브러리인 것이닀.

각 μ»΄ν¬λ„ŒνŠΈκ°€ DOM μ‘°μž‘μ„ μš”μ²­ν•  λ•Œ λ‹€λ₯Έ μ»΄ν¬λ„ŒνŠΈλ“€κ³Ό μƒν˜Έμž‘μš©ν•˜μ§€ μ•Šμ•„λ„ 되며, νŠΉμ • DOM 을 μ‘°μž‘ν•  κ²ƒμ΄λΌλ˜μ§€, ν˜Ήμ€ 이미 μ‘°μž‘ν–ˆλ‹€λ˜μ§€μ— λŒ€ν•œ 곡유λ₯Ό ν•  ν•„μš”κ°€ μ—†λ‹€.

즉 각각의 변화듀을 동기화 μž‘μ—…μ„ κ±°μΉ˜μ§€ μ•ŠμœΌλ©΄μ„œ ν•˜λ‚˜μ˜ μž‘μ—…μœΌλ‘œ λ¬Άμ„μˆ˜ μžˆλŠ”κ²ƒμ΄λ‹€.

ν•œλ²ˆμ˜ μƒνƒœλ³€κ²½μœΌλ‘œ κ°€μƒν™”ν•œ DOM μ—μ„œ μΌκ΄„μ μœΌλ‘œ μ μš©ν•˜κ³  μ§„μ§œ 돔과 λΉ„κ΅ν•΄μ„œ λ³€κ²½λœ 뢀뢄을 ν•œλ²ˆμ— μ μš©μ‹œν‚€λŠ” λ°©λ²•μœΌλ‘œ DOM λžœλ”λ§ 횟수λ₯Ό μ€„μ΄κ²Œ λœλ‹€.

Class Constructor μ—μ„œ super()

μ»΄ν¬λ„ŒνŠΈ μ•ˆμ—μ„œ μƒμ„±μž (constructor) λ₯Ό μ‹€ν–‰ν•˜λ©΄ λ°˜λ“œμ‹œ super() λ₯Ό μ‹€ν–‰ν•΄μ•Ό ν•œλ‹€.
μƒμ„±μž (constructor) λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ μžλ™μœΌλ‘œ μ‹€ν–‰ν•΄μ€€λ‹€.

μ΄λŠ” this 객체λ₯Ό μ΄ˆκΈ°ν™” 해주지 μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€.

class Myclass extends React.Component {
  constructor() {
    console.log(this);   // Error : 'this' is not allowed before
    super();
  }
}

μœ„μ™€ 같이 super() μ‹€ν•΄ 이전에 this λ₯Ό μ°Έμ‘°ν•˜λ©΄ ν—ˆμš©λ˜μ§€ μ•ŠλŠ”λ‹€.

super() λ₯Ό ν˜ΈμΆœν• λ•Œ props 인자λ₯Ό λ„˜κ²¨μ£Όλ©΄ constructor μ•ˆμ—μ„œ this.props λ₯Ό μ ‘κ·Ό κ°€λŠ₯ν•˜κ²Œ ꡬ성해쀀닀.

class Myclass extends React.Component {
  constructor(props) {
    super(props);
  }
}

μœ„μ™€ 같이 μ‚¬μš©ν•΄μ•Ό μ •μƒμ μœΌλ‘œ this.props μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.