morijwana
์ˆ˜๋กœ๊ทธ
morijwana
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • ๊ฐ•์˜๋…ธํŠธ
    • Machine Learning
      • Pandas
      • NLP
    • Computer Science
      • Linux
      • TIL
    • Development
      • React
      • Swift
      • Javascript
    • ์Šคํ„ฐ๋”” ๊ธฐ๋ก
      • Clean Code
      • ๊ตฌ๊ธ€ BERT์˜ ์ •์„
      • ๊ฐœ๋ฐœ๋„์„œ
      • ๊ธฐํƒ€
    • Problem Solving
      • Baekjoon
      • ICPC Sinchon
    • ๋„์ 
      • ๋„์ ๋„์ 
      • ์š”๋ฆฌ์™•

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Solution Challenge
  • ๊ฐœ๋ฐœ๋„์„œ
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด๋ก 
  • Python
  • ๋ฏผํŠธํ•˜์ž„์Šคํ„ฐ๋””
  • ๋ฐฑ์ค€
  • cs224n
  • word2vec
  • ML
  • ๋ฐ์ดํ„ฐ์‚ฌ์ด์–ธ์Šค
  • GDSC Sookmyung
  • ํ”„๋ ˆ์ž„์›Œํฌ์—†๋Š”ํ”„๋ก ํŠธ์—”๋“œ๊ฐœ๋ฐœ
  • Pandas
  • Bert
  • ๊ตฌ๋ถ€์ •์Šคํ„ฐ๋””
  • gdsc
  • ํšŒ๊ณ 
  • ๊ตฌ๊ธ€BERT์˜์ •์„
  • ์ž์—ฐ์–ด์ฒ˜๋ฆฌ
  • nlp

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
morijwana
Development/React

[2020 ์—ฌ๋ฆ„ ํšจ์ฐฝ๊ณต์› ์Šคํ„ฐ๋””]Rendering

Development/React

[2020 ์—ฌ๋ฆ„ ํšจ์ฐฝ๊ณต์› ์Šคํ„ฐ๋””]Rendering

2020. 7. 21. 16:50

Rendering(Templating)

๐Ÿฆ‹ ์ฐธ๊ณ ํ•œ ๋ฌธ์„œ

  • HTML ๊ธฐ์ดˆ - 3 (๋ Œ๋”๋ง์ด๋ž€?) https://velog.io/@ru_bryunak/%EB%A0%8C%EB%8D%94%EB%A7%81%EC%9D%B4%EB%9E%80
  • ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์ด ์ด๋ฃจ์–ด์ง€๋Š” ๊ณผ์ • https://tuhbm.github.io/2017/08/10/rendering1/
  • ๋ธŒ๋ผ์šฐ์ €๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€? https://d2.naver.com/helloworld/59361
  • CSS ์• ๋‹ˆ๋ฉ”์ด์…˜ ์„ฑ๋Šฅ ๊ฐœ์„  ๋ฐฉ๋ฒ•(reflow ์ตœ์†Œํ™”, will-change ์‚ฌ์šฉ) https://wit.nts-corp.com/2017/06/05/4571
  • MDN web docs - will-change https://developer.mozilla.org/ko/docs/Web/CSS/will-change

๋ Œ๋”๋ง

= ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ ๋˜๋Š” ์ด๋“ค์„ ๋ชจ์•„๋†“์€ ์žฅ๋ฉด์ธ ์”ฌ ํŒŒ์ผ(scene file)๋กœ๋ถ€ํ„ฐ ์˜์ƒ์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ณผ์ •(์œ„ํ‚ค๋ฐฑ๊ณผ)

= ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML ํŒŒ์ผ์„ ๋ฐ›์•„ ํด๋ผ์ด์–ธํŠธ์— ๋ฟŒ๋ ค์ฃผ๋Š” ๊ณผ์ •

๋ Œ๋”๋ง์ด ์ง„ํ–‰๋˜๋Š” ์ˆœ์„œ๋ฅผ ์•Œ์•„๋ณด์ž.

render-tree

Source: http://bit.ly/2Okn0fG

  1. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML ๋ฌธ์„œ๋ฅผ ๋ฐ›๋Š”๋‹ค. ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ์—”์ง„์€ HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•ด์„œ DOM ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.
  2. ์™ธ๋ถ€ CSS ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ํฌํ•จ๋œ ์Šคํƒ€์ผ ์š”์†Œ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ CSSOM ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ ๋‹ค. ์Šคํƒ€์ผ์€ ๋ธŒ๋ผ์šฐ์ €์˜ ์ž์ฒด ์Šคํƒ€์ผ - ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํƒ€์ผ - html ์•ˆ ์ธ๋ผ์ธ ์Šคํƒ€์ผ ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉฐ, ๋‚˜์ค‘์— ์ฒ˜๋ฆฌ๋˜๋Š” ์Šคํƒ€์ผ์„ ๋”ฐ๋ฅธ๋‹ค.
  3. ๊ฐ๊ฐ 1, 2์—์„œ ๋งŒ๋“ค์–ด์ง„ DOM ํŠธ๋ฆฌ์™€ CSSOM ํŠธ๋ฆฌ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ Œ๋”๋ง ํŠธ๋ฆฌ๋ฅผ ํ˜•์„ฑํ•œ๋‹ค. ์ด๋•Œ, ํ™”๋ฉด์— ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š๋Š” head ํƒœ๊ทธ๋‚˜ display: none; ์ด ํ• ๋‹น๋œ ์š”์†Œ๋Š” ๋ Œ๋”๋ง ํŠธ๋ฆฌ์— ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค.
  4. ๊ธฐ๊ธฐ์˜ view port(๊ทธ๋ž˜ํ”ฝ์ด ํ‘œ์‹œ๋˜๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ์˜์—ญ) ๋‚ด์—์„œ ๋…ธ๋“œ๋“ค์˜ ์ •ํ™•ํ•œ ์œ„์น˜์™€ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •์ด ์ง„ํ–‰๋œ๋‹ค. ์ด ๋‹จ๊ณ„๋ฅผ ๋ ˆ์ด์•„์›ƒ ๋‹จ๊ณ„ ๋˜๋Š” ๋ฆฌํ”Œ๋กœ์šฐ ๋‹จ๊ณ„๋ผ๊ณ  ํ•œ๋‹ค. ํŽ˜์ด์ง€์—์„œ ๊ฐ ๊ฐ์ฒด์˜ ์ •ํ™•ํ•œ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ Œ๋”๋ง ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋ Œ๋”๋ง ํŠธ๋ฆฌ๋ฅผ ์ˆœํšŒํ•œ๋‹ค.
  5. ๋ Œ๋”๋ง ์—”์ง„์€ ํŽ˜์ธํŠธ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ๋ Œ๋”๋ง ํŠธ๋ฆฌ๋ฅผ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๊ณ , ์ด ๊ณผ์ •์„ ํŽ˜์ธํŒ… ๋˜๋Š” ๋ž˜์Šคํ„ฐํ™” ๋ผ๊ณ  ํ•œ๋‹ค. ์š”์†Œ๋“ค์˜ ์œ„์น˜์™€ ํฌ๊ธฐ, ์Šคํƒ€์ผ ๋“ฑ์˜ ๊ณ„์‚ฐ์ด ์™„๋ฃŒ๋œ ๋ Œ๋”๋ง ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ์‹ค์ œ ๊ฐ’์„ ์ฑ„์›Œ ๋„ฃ๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ชจ๋“  HTML์„ ํŒŒ์‹ฑํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋…ธ๋“œ ๋ฐฐ์น˜์™€ ๊ทธ๋ฆฌ๊ธฐ ๊ณผ์ •์„ ๋™์‹œ์— ์ง„ํ–‰ํ•œ๋‹ค. ์›นํŽ˜์ด์ง€์— ์ ‘์†ํ–ˆ์„ ๋•Œ ํŽ˜์ด์ง€๊ฐ€ ํ•œ ๋ฒˆ์— ๋‹ค ๋กœ๋“œ๋˜์ง€ ์•Š๊ณ  ๊ฐ ์š”์†Œ๊ฐ€ ์‹œ๊ฐ„์ฐจ๋ฅผ ๋‘๊ณ  ๋กœ๋“œ๋˜๋Š” ๊ฒƒ์ด ์ด ๋•Œ๋ฌธ์ด๋‹ค.

๋ Œ๋”๋ง์ด ์™„๋ฃŒ๋œ ์ƒํƒœ์—์„œ ์‚ฌ์šฉ์ž์˜ ์ธํ„ฐ๋ž™์…˜์— ์˜ํ•ด ํ™”๋ฉด์˜ ์ผ๋ถ€ ์˜์—ญ์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๋ฆฌํ”Œ๋กœ์šฐ ๋˜๋Š” ๋ฆฌํŽ˜์ธํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • ๋ ˆ์ด์•„์›ƒ์ด ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ ๋ฆฌํ”Œ๋กœ์šฐ + ๋ฆฌํŽ˜์ธํŠธ
  • = DOM ์—˜๋ฆฌ๋จผํŠธ ์ถ”๊ฐ€, ์ œ๊ฑฐ ๋˜๋Š” ๋ณ€๊ฒฝ/CSS ์Šคํƒ€์ผ ์ถ”๊ฐ€, ์ œ๊ฑฐ ๋˜๋Š” ๋ณ€๊ฒฝ/CSS3 ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ํŠธ๋žœ์ง€์…˜/offsetWidth, offsetHeight์˜ ์‚ฌ์šฉ/๊ฐ€์ƒ์„ ํƒ์ž hover/ํ…์ŠคํŠธ ์ž…๋ ฅ/์ฐฝ ํฌ๊ธฐ ์กฐ์ • ๋“ฑ
  • ๋ ˆ์ด์•„์›ƒ์—๋Š” ๋ณ€๊ฒฝ์ด ์—†์ง€๋งŒ ๊ฐ€์‹œ์„ฑ์—๋Š” ์˜ํ–ฅ์„ ์ฃผ๋Š” ์š”์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ ๋ฆฌํŽ˜์ธํŠธ= ๊ฐ์ฒด์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌํ”Œ๋กœ์šฐ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • = opacity, background-color ๋“ฑ

Google์˜ ๋ฆฌํ”Œ๋กœ์šฐ ์ตœ์†Œํ™” ๊ฐ€์ด๋“œ๋ผ์ธ

  1. ๋ถˆํ•„์š”ํ•œ DOM ํŠธ๋ฆฌ ๊นŠ์ด๋ฅผ ์ค„์ธ๋‹ค.
  2. CSS ๊ทœ์น™์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” CSS ๊ทœ์น™์„ ์‚ญ์ œํ•œ๋‹ค.
  3. ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ๊ฐ™์ด ๋ณต์žกํ•œ ๋ Œ๋”๋ง์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ ํ๋ฆ„ ๋ฐ–์—์„œ ๋ณ€๊ฒฝํ•œ๋‹ค. ๋ณ€๊ฒฝํ•  ๋•Œ๋Š” ์ ˆ๋Œ€ ์œ„์น˜๋‚˜ ๊ณ ์ • ์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  4. ๋ถˆํ•„์š”ํ•˜๊ณ  ๋ณต์žกํ•œ CSS ์„ ํƒ์ž, ํŠนํžˆ ํ•˜์œ„ ์š”์†Œ ์„ ํƒ์ž๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด ๊ฒฝ์šฐ ์„ ํƒ์ž๋ฅผ ์ฐพ์•„๋‚ด๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ CPU ์ฒ˜๋ฆฌ๋Ÿ‰์ด ํ•„์š”ํ•˜๋‹ค.

CSS + JS์—์„œ์˜ ๋ฆฌํ”Œ๋กœ์šฐ ์ตœ์†Œํ™” ๋ฐฉ๋ฒ•

  1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ DOM ๊ฐ์ฒด ํ˜ธ์ถœ ํšŸ์ˆ˜ ์ค„์ด๊ธฐ
let div = document.getElementById('my-div');
// DOM ๊ฐ์ฒด ์—ฌ๋Ÿฌ ๋ฒˆ ์ˆ˜์ • => ๋ฆฌํ”Œ๋กœ์šฐ & ๋ฆฌํŽ˜์ธํŠธ ๊ณผ๋‹ค ๋ฐœ์ƒ
div.style.width = '680px';
div.style.height = '360px';
div.style.margin = '35px auto';
let div = document.getElementById('my-div');
// DOM ๊ฐ์ฒด ํ•œ ๋ฒˆ ์ˆ˜์ • => ๋ฆฌํ”Œ๋กœ์šฐ & ๋ฆฌํŽ˜์ธํŠธ 1๋ฒˆ๋งŒ ๋ฐœ์ƒ
div.style.cssText = 'width: 680px; height: 360px; margin: 35px auto;';
  1. ์ธ๋ผ์ธ ์Šคํƒ€์ผ ๋ฐฐ์ œ
  2. ์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ๋ฆฌํ”Œ๋กœ์šฐ ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์™ธ๋ถ€ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฆฌํ”Œ๋กœ์šฐ๊ฐ€ ํ•œ ๋ฒˆ๋งŒ ์ผ์–ด๋‚˜๋Š” ๋ฐ˜๋ฉด, ์ธ๋ผ์ธ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฆฌํ”Œ๋กœ์šฐ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐœ์ƒํ•œ๋‹ค.
  3. ํ…Œ์ด๋ธ” ๋ ˆ์ด์•„์›ƒ ๋ฐฐ์ œ
  4. ํ…Œ์ด๋ธ”๋กœ ๊ตฌ์„ฑ๋œ ํŽ˜์ด์ง€ ๋ ˆ์ด์•„์›ƒ์€ ์ ์ง„์  ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์ด ์ง€์›๋˜์ง€ ์•Š๊ณ , ๋ชจ๋‘ ๊ณ„์‚ฐ๋œ ํ›„์—์•ผ ํ™”๋ฉด์— ๋ณด์—ฌ์ง„๋‹ค.

๊ฐ™์ด ๋ณด๋ฉด ์ข‹์€ ๊ธ€: https://sculove.github.io/slides/improveBrowserRendering/#/6

์• ๋‹ˆ๋ฉ”์ด์…˜

  • VSync์™€ fps

์• ๋‹ˆ๋ฉ”์ด์…˜์— ์˜ํ•œ ๋ฆฌํ”Œ๋กœ์šฐ ์ตœ์†Œํ™” ๋ฐฉ๋ฒ•

  1. ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋ฅผ ์ค„ ๋•Œ position: fixed ๋˜๋Š” position: absolute๋กœ ์ง€์ •ํ•˜์—ฌ ์ „์ฒด ๋…ธ๋“œ์—์„œ ๋ถ„๋ฆฌ
  2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ CSS๋ฅผ ํ™œ์šฉํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ์—๋Š” ๋งŽ์€ ๋ฆฌํ”Œ๋กœ์šฐ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๋Š”๋ฐ, position ์†์„ฑ์œผ๋กœ fixed ๋˜๋Š” absolute๋ฅผ ์ฃผ๋ฉด ์ง€์ •ํ•œ ๋…ธ๋“œ๋Š” ์ „์ฒด ๋…ธ๋“œ์—์„œ ๋ถ„๋ฆฌ๋˜์–ด ํ•ด๋‹น ๋…ธ๋“œ์˜ ๋ฆฌํ”Œ๋กœ์šฐ ๋น„์šฉ๋งŒ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.
  3. will-change ์ด์šฉ
    /* will-change ์†์„ฑ 4๊ฐ€์ง€ */    
    will-change: auto; /* ๋ณ„๋‹ค๋ฅธ ์ตœ์ ํ™” ์กฐ์น˜ ์—†์Œ */    
    will-change: scroll-position; /* ์Šคํฌ๋กคํ•  ๋•Œ ์—˜๋ฆฌ๋จผํŠธ์˜ ์œ„์น˜๊ฐ€ ๋ฐ”๋€” ๊ฒƒ์„ ์˜ˆ๊ณ  */    
    will-change: contents;      /* ์—˜๋ฆฌ๋จผํŠธ์˜ ์ปจํ…์ธ ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒƒ์„ ์˜ˆ๊ณ  */    
    will-change: transform;  /* ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์€ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ. ํฌ๋กฌ์—์„œ๋Š” opacity, transform, top, left, right, bottom์˜ 6๊ฐ€์ง€๋งŒ ์ง€์› */    
    ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฏธ ๋ชจ๋“  ์š”์†Œ์— ๋Œ€ํ•ด ์ตœ์ ํ™” ์‹œ๋„๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ธŒ๋ผ์šฐ์ €๋Š” will-change ์†์„ฑ์ด ์‚ฌ์šฉ๋œ ์š”์†Œ์—๋Š” ํŠน๋ณ„ํžˆ ๋” ๋งŽ์€ ์ž์›์„ ์†Œ๋ชจํ•˜์—ฌ ์ตœ์ ํ™”๋ฅผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ will-change๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์˜คํžˆ๋ ค ์„ฑ๋Šฅ์„ ๋” ๋‚ฎ์ถœ ์ˆ˜๋„ ์žˆ๋‹ค.
    var el = document.getElementById('element');
    
    // ์š”์†Œ๊ฐ€ hover ์ƒํƒœ์ผ ๋•Œ will-change ์„ค์ •
    el.addEventListener('mouseenter', hintBrowser);
    el.addEventListener('animationEnd', removeHint);
    
    function hintBrowser() {
      // ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ‚คํ”„๋ ˆ์ž„ ๋‹จ๋ฝ ๋‚ด์—์„œ
      // ๋ณ€๊ฒฝ๋  ์˜ˆ์ •์ธ ์ตœ์ ํ™” ๊ฐ€๋Šฅํ•œ ์†์„ฑ๋“ค
      this.style.willChange = 'transform, opacity';
    }
    
    function removeHint() {
      this.style.willChange = 'auto';
    }
  4. ์Šฌ๋ผ์ด๋“œ์ฒ˜๋Ÿผ ์ฃผ๊ธฐ๊ฐ€ ์งง๊ณ  ๋ณ€ํ™”๊ฐ€ ํ™•์‹คํžˆ ์˜ˆ๊ณ ๋œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋™์ž‘์ด ๋๋‚œ ๋’ค์— ๊ธฐ๋ณธ ์ƒํƒœ(will-change: auto)๋กœ ๋˜๋Œ๋ ค์•ผ ํ•œ๋‹ค. ์ตœ์ ํ™”๋ฅผ ์‹œ๋„ํ•˜๋ฉด ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๋Š”๋ฐ, will-change์˜ ๊ฒฝ์šฐ๋Š” ์ตœ์ ํ™”๋ฅผ ๊ธธ๊ฒŒ ์œ ์ง€์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  5. will-change ์†์„ฑ์„ ํ†ตํ•ด ๋ณ€ํ™”๊ฐ€ ์˜ˆ์ƒ๋˜๋Š” ์š”์†Œ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ฏธ๋ฆฌ ์•Œ๋ ค์คŒ์œผ๋กœ์จ ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚˜๊ธฐ ์ „์— ์ ์ ˆํ•œ ์ตœ์ ํ™” ์กฐ์น˜๋ฅผ ์ทจํ•œ๋‹ค.

๋ Œ๋”๋ง ์—”์ง„

https://d2.naver.com/helloworld/59361

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

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

2022 ๋””์ž์ธ ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 11๊ฐœ ์ฐ๋จน ํ›„๊ธฐ  (2) 2022.10.29
shouldComponentUpdate()์™€ React.PureComponent  (2) 2021.01.29
  • ๋ Œ๋”๋ง
  • Google์˜ ๋ฆฌํ”Œ๋กœ์šฐ ์ตœ์†Œํ™” ๊ฐ€์ด๋“œ๋ผ์ธ
  • CSS + JS์—์„œ์˜ ๋ฆฌํ”Œ๋กœ์šฐ ์ตœ์†Œํ™” ๋ฐฉ๋ฒ•
  • ์• ๋‹ˆ๋ฉ”์ด์…˜
  • ์• ๋‹ˆ๋ฉ”์ด์…˜์— ์˜ํ•œ ๋ฆฌํ”Œ๋กœ์šฐ ์ตœ์†Œํ™” ๋ฐฉ๋ฒ•
  • ๋ Œ๋”๋ง ์—”์ง„
'Development/React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • 2022 ๋””์ž์ธ ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 11๊ฐœ ์ฐ๋จน ํ›„๊ธฐ
  • shouldComponentUpdate()์™€ React.PureComponent
morijwana
morijwana
ํ–‰๋ณตํ•œ ํœดํ•™์ƒ์˜ devlog

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.