Skip to content

Latest commit

ย 

History

History
115 lines (88 loc) ยท 9.44 KB

File metadata and controls

115 lines (88 loc) ยท 9.44 KB

it's better to check their website as there're more positions there.

Tell us about one of the most interesting technical challenges youโ€™ve had to solve. How did you go about it and what was the outcome?

What is the latest technology that you learned, what inspired you to learn it, and how was it useful?

https://github.com/JaeYeopHan/Interview_Question_for_Beginner

immediately-invoked function expression

// IIFE๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด
// i is not defined๊ฐ€ ๋œฌ๋‹ค.
(function() {
  // var ๋ณ€์ˆ˜๋Š” ์—ฌ๊ธฐ๊นŒ์ง€ hoisting์ด ๋œ๋‹ค.
  for(var i=0; i<10; i++) {
    console.log('i', i)
  }
})()
console.log('after loop i is', i) // ReferenceError: i is not defined

// var i ์ „์—ญ๋ณ€์ˆ˜ํ™” ๋จ IIFE
(function() {
  for(i=0; i<10; i++) {
    console.log('i', i)
  }
})()
console.log('after loop i is', i) // after loop i is 10

// 'use strict' i is not defined๋ผ๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
(function() {
  'use strict'
  for(i=0; i<10; i++) {
    console.log('i', i)
  }
})()
console.log('after loop i is', i) // ReferenceError: i is not defined

Temporal Dead Zone(TDZ) const์™€ let์€ ๋ฒ”์œ„๊ฐ€ ์ง€์ •๋œ ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ด ๋‘˜์˜ ํ˜ธ์ด์ŠคํŒ…์ด ์‹คํ–‰ ๋˜๊ธฐ์ „ ๊นŒ์ง€ ์•ก์„ธ์Šค ํ• ์ˆ˜ ์—†๋Š” ๊ฒƒ์„ TDZ๋ผ ํ•œ๋‹ค. ์ฆ‰, let/const์„ ์–ธ ๋ณ€์ˆ˜๋Š” ํ˜ธ์ด์ŠคํŒ…๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์Šค์ฝ”ํ”„์— ์ง„์ž…ํ•  ๋•Œ ๋ณ€์ˆ˜๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  TDZ(Temporal Dead Zone)๊ฐ€ ์ƒ์„ฑ๋˜์ง€๋งŒ, ์ฝ”๋“œ ์‹คํ–‰์ด ๋ณ€์ˆ˜๊ฐ€ ์‹ค์ œ ์žˆ๋Š” ์œ„์น˜์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋‹ค. let/const๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์‹œ์ ์—์„œ ์ œ์–ดํ๋ฆ„์€ TDZ๋ฅผ ๋– ๋‚œ ์ƒํƒœ๊ฐ€ ๋˜๋ฉฐ, ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

NodeJS๋ž€ ํฌ๋กฌ V8 JavaScript ์—”์ง„์œผ๋กœ ๋นŒ๋“œ๋œ JS Runtime Node.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‚ด์˜ API๋Š” ๋ชจ๋‘ ๋น„๋™๊ธฐ ๋‹จ์ผ ์“ฐ๋ ˆ๋“œ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ณ , ์ด๋ฒคํŠธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด ์„œ๋ฒ„๊ฐ€ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ์–ด ํ™•์žฅ์„ฑ์„ ํ‚ค์›Œ์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Chrome์˜ V8 JavaScript ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅธ ์ฝ”๋“œ ์‹คํ–‰์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ฒ„ํผ๋ง์ด ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋‹ค๋ฃจ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์‹ฑ๊ธ€ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA), ์ž…์ถœ๋ ฅ์ด ์žฆ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ๋›ฐ์–ด๋‚œ ํšจ์œจ์„ฑ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค. ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ ๋ชจ๋ธ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์ž‘์—… ์ž์ฒด๊ฐ€ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ๋ฉด ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์ด ์•„์ฃผ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋‚˜๋น ์ง€๋ฏ€๋กœ CPU ์‚ฌ์šฉ๋ฅ ์ด ๋†’์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„  Node.js ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

foreach()์™€ map()ํ•จ์ˆ˜์˜ ์ฐจ์ด์  .foreach() ๊ฐ’์„ ๋ฐ˜ํ™˜ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ฝœ๋ฐฑ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.(ํ˜„์žฌ ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•ด์„œ ๋ฐ˜ํ™˜)

.map() ๊ฐ’์„ ๋ฐ˜ํ™˜ ํ•œ๋‹ค. ๊ฐ ์š”์†Œ์—์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฒฐ๊ณผ๋กœ ์ƒˆ ๋ฐฐ์—ด์„ ์ž‘์„ฑํ•˜์—ฌ ๊ฐ ์š”์†Œ๋ฅผ ์ƒˆ ์š”์†Œ์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.

Speed = $.each < map < filter < forEach < reduce < for loop

Closure A closure is the combination of a function and the lexical environment within which that function was declared. ํด๋กœ์ €๋Š” ํ•จ์ˆ˜์™€ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋์„ ๋•Œ์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ(Lexical environment)๊ณผ์˜ ์กฐํ•ฉ์ด๋‹ค. -MDN- ์œ„ ์ •์˜์—์„œ ๋งํ•˜๋Š” โ€œํ•จ์ˆ˜โ€ ๋ž€ ๋ฐ˜ํ™˜๋œ ๋‚ด๋ถ€ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๊ณ  โ€œ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋  ๋•Œ์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ(Lexical environment)โ€๋ž€ ๋‚ด๋ถ€ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋์„ ๋•Œ์˜ ์Šค์ฝ”ํ”„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, ํด๋กœ์ €๋Š” ๋ฐ˜ํ™˜๋œ ๋‚ด๋ถ€ํ•จ์ˆ˜๊ฐ€ ์ž์‹ ์ด ์„ ์–ธ๋์„ ๋•Œ์˜ ํ™˜๊ฒฝ(Lexical environment)์ธ ์Šค์ฝ”ํ”„๋ฅผ ๊ธฐ์–ตํ•˜์—ฌ ์ž์‹ ์ด ์„ ์–ธ๋์„ ๋•Œ์˜ ํ™˜๊ฒฝ(์Šค์ฝ”ํ”„) ๋ฐ–์—์„œ ํ˜ธ์ถœ๋˜์–ด๋„ ๊ทธ ํ™˜๊ฒฝ(์Šค์ฝ”ํ”„)์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค.

  1. Virtual DOM์€ ๋ฌด์—‡์ธ๊ฐ€์š”? Virtual DOM is replication of HTML DOM Elements in the memory. When Component is re rendered, Virtual DOM์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ UI๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” HTML ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์—์„œ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹ค์‹œ ๋ Œ๋”๋ง๋  ๋•Œ, virtual DOM์€ ์—…๋ฐ์ดํŠธํ•  ์š”์†Œ์˜ ๋ชฉ๋ก์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ธฐ์กด์˜ DOM ๋ชจ๋ธ์—์„œ ๋ณ€๊ฒฝ๋˜๋Š” ์‚ฌํ•ญ์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. DOM ์ „์ฒด๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•  ํ•„์š” ์—†์ด ์‹ค์ œ DOM์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ๋งŒ ๋ณ€๊ฒฝํ•˜์—ฌ ํšจ์œจ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์ด ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค.

  2. JSX๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? JSX๋Š” HTML์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์˜ ํ™•์žฅ์ž…๋‹ˆ๋‹ค. JSX๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹์œผ๋กœ ์ปดํŒŒ์ผ๋˜์–ด ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•œ ๋งˆํฌ์—…์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  3. ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ์™€ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? React 16.8(hooks ๋„์ž…) ์ด์ „์—๋Š” ๋‚ด๋ถ€ state๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์†Œ๋“œ(lifecycle methods)(์ฆ‰, componentDidMount ๋ฐ shouldComponentUpdate)๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฆฌ์•กํŠธ์˜ Component ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•˜๋Š” ES6 ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ตœ์†Œํ•œ render() ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  4. key๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋‚˜์š”? ๋ฆฌ์•กํŠธ์—์„œ collection์„ ๋ Œ๋”๋งํ•  ๋•Œ ์—˜๋ฆฌ๋จผํŠธ์™€ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์‰ฝ๋„๋ก ๋ฐ˜๋ณต๋˜๋Š” ๊ฐ ์—˜๋ฆฌ๋จผํŠธ์— key๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ‚ค๋Š” ๊ณ ์œ ํ•œ ID(์ด์ƒ์ ์œผ๋กœ๋Š” UUID ๋˜๋Š” ๊ธฐํƒ€ ๊ณ ์œ  ๋ฌธ์ž์—ด)๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ, ๋งˆ์ง€๋ง‰ ์ˆ˜๋‹จ์œผ๋กœ Array index๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  5. state์™€ props์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? props๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. props๋Š” ์ˆ˜์ •๋  ์ˆ˜ ์—†์œผ๋ฉฐ ํ‘œ์‹œ๋˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. state๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ ๋™์•ˆ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๋Š” ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋กœ, ๋‹ค์‹œ ๋ Œ๋”๋งํ•ด๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

  6. ์™œ state๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  setState๋ฅผ ์ด์šฉํ•˜๋‚˜์š”? ๋งŒ์•ฝ ์ปดํฌ๋„ŒํŠธ์˜ state๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ๋‹ค๋ฉด, ๋ฆฌ์•กํŠธ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. setState() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์•กํŠธ๋Š” ์ปดํฌ๋„ŒํŠธ์˜ UI๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  7. React context๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? ๋ฆฌ์•กํŠธ๋Š” ํ•˜๋‚˜์˜ ์•ฑ ์•ˆ์—์„œ ๋ณต์ˆ˜์˜ ์ปดํฌ๋„ŒํŠธ๋“ค์ด state๋ฅผ ๊ณต์œ ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด context API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. context๊ฐ€ ๋„์ž…๋˜๊ธฐ ์ „์—๋Š” Redex์™€ ๊ฐ™์€ ๋ณ„๋„์˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์€ (ํŠนํžˆ ์ž‘์€ ์•ฑ์—์„œ) Redux๊ฐ€ ๋ถˆํ•„์š”ํ•œ ๋ณต์žก์„ฑ์„ ์œ ๋ฐœํ•œ๋‹ค๊ณ  ๋А๊ผˆ์Šต๋‹ˆ๋‹ค.

  8. Redux๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? Redux๋Š” React๋ฅผ ์œ„ํ•œ ์จ๋“œํŒŒํ‹ฐ state ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, context API๊ฐ€ ๊ฐœ๋ฐœ๋˜๊ธฐ ์ „๋ถ€ํ„ฐ ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. Redux๋Š” store๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” state ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฐœ๋…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š”๋ฐ, store ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ props๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. store๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ reducer๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋Š” store์— action์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. reducer๋Š” action๊ณผ ํ˜„์žฌ์˜ state๋ฅผ ๋ฐ›๊ณ , ์ƒˆ๋กœ์šด state๋ฅผ ๋ฐ˜ํ™˜(return)ํ•˜๊ณ , ๊ตฌ๋…๋œ(subscribed) ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  9. React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์Šคํƒ€์ผ๋ง(styling)ํ•˜๋Š” ๋ณดํŽธ์ ์ธ ๋ฐฉ์‹์€ ๋ฌด์—‡์ธ๊ฐ€์š”? ์ธ๋ผ์ธ ์Šคํƒ€์ผ๋ง(Inline styling) : ํ”„๋กœํ† ํƒ€์ž…์„ ๋งŒ๋“ค ๋•Œ ํ›Œ๋ฅญํ•˜์ง€๋งŒ ํ•œ๊ณ„๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค (์˜ˆ๋กœ, pseudo-classes๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค) ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ CSS ์Šคํƒ€์ผ : ์ธ๋ผ์ธ ์Šคํƒ€์ผ๋ง๋ณด๋‹ค ์œ ์šฉํ•˜๊ณ  React์— ์ต์ˆ˜ํ•˜์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ž๋“ค๋„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CSS in JS ์Šคํƒ€์ผ๋ง : ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ์Šคํƒ€์ผ์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์„ ์–ธํ•˜์—ฌ ์Šคํƒ€์ผ๋งํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  10. ์ œ์–ด ์ปดํฌ๋„ŒํŠธ์™€ ๋น„์ œ์–ด ์ปดํฌ๋„ŒํŠธ์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? HTML ๋ฌธ์„œ์—์„œ ๋งŽ์€ form ์—˜๋ฆฌ๋จผํŠธ๋“ค(, <textarea>, ๋“ฑ)์€ ๊ณ ์œ ํ•œ state๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋น„์ œ์–ด ์ปดํฌ๋„ŒํŠธ๋Š” DOM์„ ์ด๋Ÿฌํ•œ input๋“ค์˜ state์— ๋Œ€ํ•œ ์ง„์งœ ๊ทผ์›(source of truth for the state of these inputs)์œผ๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์ œ์–ด ์ปดํฌ๋„ŒํŠธ์—์„œ ๋‚ด๋ถ€ state๋Š” ์—˜๋ฆฌ๋จผํŠธ์˜ ๊ฐ’(value)๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. input์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๋ฆฌ์•กํŠธ๋Š” input์„ ๋‹ค์‹œ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. ๋น„์ œ์–ด ์ปดํฌ๋„ŒํŠธ๋Š” non-React ์ฝ”๋“œ์™€ ํ•ฉ์น  ๋•Œ(์˜ˆ๋ฅผ ๋“ค์–ด jQuery ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ผ๋ถ€๋ฅผ ์ง€์›ํ•ด์•ผ ํ•  ๋•Œ) ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  11. ์ƒ๋ช…์ฃผ๊ธฐ(lifecycle) ๋ฉ”์†Œ๋“œ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ์ปดํฌ๋„ŒํŠธ๋Š” ๊ทธ๋“ค์ด mount(DOM์— ๋ Œ๋”๋ง)๋˜์—ˆ์„ ๋•Œ, unmount๋  ๋•Œ ๋“ฑ๊ณผ ๊ฐ™์ด ๊ทธ๋“ค์˜ ์ƒ๋ช…์ฃผ๊ธฐ ์ค‘ ํŠน์ •ํ•œ ์‹œ์ ์— ํ˜ธ์ถœ๋˜๋Š” ํŠน๋ณ„ํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์„ ์…‹ํŒ… ๋ฐ ํ•ด์ œํ•˜๊ฑฐ๋‚˜, ํƒ€์ด๋จธ๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ € ์ด๋ฒคํŠธ์— ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์†Œ๋“œ๋“ค์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. React hooks๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? Hooks๋Š” ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ์ปดํฌ๋„ŒํŠธ์˜ ์žฅ์ (์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‚ด๋ถ€ state์™€ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์†Œ๋“œ)์„ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๋Š” ๋ฆฌ์•กํŠธ์˜ ์‹œ๋„์ž…๋‹ˆ๋‹ค.

  2. React hooks์˜ ์žฅ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”? ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ์ปดํฌ๋„ŒํŠธ, lifecycle hooks, this์˜ ํ•„์š”์„ฑ์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ์ปค์Šคํ…€ hook๋กœ ๋งŒ๋“ค์–ด์„œ ๋กœ์ง์„ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ ์ž์ฒด์—์„œ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ฝ๊ธฐ ์‰ฝ๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.