Skip to content

week2 tech

hyeonggyu ham edited this page Nov 15, 2019 · 4 revisions

react์™€ canvas

์ž‘์„ฑ์ž: ํ•จํ˜•๊ทœ, ์กฐ์˜๋„

ํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๊ฒƒ

react ์ปดํฌ๋„ŒํŠธ์—์„œ canvas ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด์„œ ์ปค๋‹ค๋ž€ ํ•„๋“œ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ , ๊ทธ ์œ„์— ์บ๋ฆญํ„ฐ๋“ค์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์ž!

์ฒซ๋ฒˆ์งธ ์‚ฐ

  • canvas์— ์ด๋ฏธ์ง€๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด, canvas DOM์˜ context๋ฅผ ๋งŒ๋“ค๊ณ  context๋ฅผ ์ด์šฉํ•ด์„œ drawImage ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ react๋Š” ์ปดํฌ๋„ŒํŠธ๋กœ ๊ด€๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—, DOM ์กฐ์ž‘์„ ํ”ผํ•ด์•ผ ํ•œ๋‹ค.
  • ref๋กœ ํ•ด๊ฒฐ!
react์—์„œ ์ง์ ‘์ ์ธ DOM ์กฐ์ž‘์ด ๋ถˆ๊ฐ€ํ”ผํ•  ๊ฒฝ์šฐ, ref๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
html์˜ id์ฒ˜๋Ÿผ, react ๋‚ด๋ถ€์—์„œ ref๋ฅผ ์‚ฌ์šฉํ•ด์„œ DOM์— ์ด๋ฆ„์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
ref์˜ ์‚ฌ์šฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, DOM ์š”์†Œ ํ˜น์€ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํ•œ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ref ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ref๋ฅผ ๋งŒ๋“  ํ›„ DOM์— ref๋ฅผ ์„ค์ •ํ•ด์ฃผ๋ฉด, ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ref.current๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋กœ๋“œ๋œ ํ›„ DOM์„ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋ฏ€๋กœ useEffect ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ์ข‹๋‹ค.

๋‘๋ฒˆ์งธ ์‚ฐ

  • cavas ํƒœ๊ทธ์— width/height๋ฅผ css๋กœ ์ ์šฉํ•˜๊ณ , drawImage๋กœ ์บ๋ฆญํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜์ž ์บ๋ฆญํ„ฐ๊ฐ€ ์˜๋„ํ–ˆ๋˜ ์‚ฌ์ด์ฆˆ์™€ ์ „ํ˜€ ๋‹ค๋ฅด๊ฒŒ ํ‘œ์‹œ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ...?

  • html ์†์„ฑ์œผ๋กœ ํ•ด๊ฒฐ

css๋กœ ์บ”๋ฒ„์Šค์˜ ๋„ˆ๋น„์™€ ๋†’์ด๋ฅผ ์กฐ์ •ํ•˜๋ฉด, ์‹ค์ œ ์บ”๋ฒ„์Šค๊ฐ€ ๋Š˜์–ด๋‚˜๊ฑฐ๋‚˜ ์••์ถ•๋˜์–ด ๋‚ด์šฉ์ด ํ™•๋Œ€/์ถ•์†Œ ๋œ๋‹ค.
๋Œ€์‹  ์ด์ „ HTML ๋„ˆ๋น„ ๋ฐ ๋†’์ด ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

๋น„์œจ์ด ๋งž๊ฒŒ ์กฐ์ •๋˜์—ˆ๋‹ค.

์„ธ๋ฒˆ์งธ ์‚ฐ

  • ์บ๋ฆญํ„ฐ ์ด๋ฏธ์ง€๊ฐ€ ๊ฐ€๋”์”ฉ ์•„์˜ˆ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
  • canvas context์˜ drawImage ํ•จ์ˆ˜๊ฐ€ image๊ฐ€ ๋กœ๋“œ๋˜๊ธฐ ์ „์— ์‹คํ–‰๋  ๊ฒฝ์šฐ, ๊ทธ๋ฆด image๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ์‹œ๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ด์—ˆ๋‹ค.
  • onload๋กœ ํ•ด๊ฒฐ
drawImage ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ•ด๋‹น image์˜ onloadํ•จ์ˆ˜์˜ ์ฝœ๋ฐฑํ•จ์ˆ˜๋กœ ์ฃผ๋ฉด, image๊ฐ€ ๋กœ๋“œ๋œ ํ›„์— draw๋ฅผ ํ•˜๊ธฐ๋•Œ๋ฌธ์— ํ•ญ์ƒ ์ด๋ฏธ์ง€๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.

Clone this wiki locally