Vue: ๋น„๋™๊ธฐ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜

์— ๋งŒ๋“  2018๋…„ 08์›” 31์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: vuejs/vue

๋ฒ„์ „

2.5.17

๋ณต์ œ ๋งํฌ

https://codesandbox.io/s/4k43rylw0

์žฌํ˜„ ๋‹จ๊ณ„

  1. ์žฌํ˜„๊ธฐ๋ฅผ๋กœ๋“œํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ํž™ ์Šค๋ƒ… ์ƒท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํž™์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด 4 ๊ฐœ์˜ VueComponents (App, Container, Child, Async Child)๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    image

  2. ํŒŒ๊ดด ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ž์‹ ๊ตฌ์„ฑ ์š”์†Œ์™€ AsyncChild ๊ตฌ์„ฑ ์š”์†Œ๋„ ์ œ๊ฑฐ๋˜๋Š” v-if๊ฐ€ ํ† ๊ธ€๋ฉ๋‹ˆ๋‹ค.

  3. ์ด ์‹œ์ ์—์„œ ํŽ˜์ด์ง€๋Š” ์˜ˆ์ƒ๋Œ€๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.
  4. ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ํž™ ์Šค๋ƒ… ์ƒท์„ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค. ํž™์—์„œ "VueComponent"๋ฅผ ๋‹ค์‹œ ๊ฒ€์ƒ‰ํ•˜๋ฉด 4 ๊ฐœ์˜ VueComponent๊ฐ€ ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    image
    image

๋ฌด์—‡์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๊นŒ?

Child ์ปดํฌ๋„ŒํŠธ๋ฅผ ์†Œ๋ฉธ ํ•œ ํ›„ ์ปดํฌ๋„ŒํŠธ์™€ ๋น„๋™๊ธฐ ์ ์œผ๋กœ๋กœ๋“œ ๋œ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์†Œ๋ฉธํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

Vue๋Š” ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์ปจํ…์ŠคํŠธ ์ฐธ์กฐ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


์ด๋Š” https://github.com/vuejs/vue/blob/52719ccab8fccffbdf497b96d3731dc86f04c1ce/src/core/vdom/helpers/resolve-async-component.js#L57-L68์—์žˆ๋Š” resolve-async-component ๋กœ์ง์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

64 ํ–‰์˜ forceRender ํ•จ์ˆ˜์—์„œ $ forceUpdate๋ฅผ ํ˜ธ์ถœ ํ•œ ํ›„ ์ปจํ…์ŠคํŠธ ๋ฐฐ์—ด์„ ์ง€์›Œ์„œ ํ•ด๋‹น ์ฐธ์กฐ๋ฅผ ํ•ด์ œํ•ด์•ผ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋‚˜์ค‘์— ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

bug has PR

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ๋ฌธ์ œ์˜ ์ˆ˜์ •์— ๋Œ€ํ•œ PR๋„ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์ด ๋ฌธ์ œ์˜ ์ˆ˜์ •์— ๋Œ€ํ•œ PR๋„ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @LinusBorg

์ด ๋ฌธ์ œ์— ๋ช‡ ๊ฐ€์ง€ ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ ํ•œ ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฐธ์กฐ ๋œ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์˜ ๊ฒ€ํ†  ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ดํ•ด์•ผ โ€‹โ€‹ํ•  ๋‹ค๋ฅธ ์ž‘์—…์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰