์‹œ์ž‘ํ•˜๋ฉฐ

Vue ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์„ ์œ„ํ•œ ๋””๋ ‰ํ‹ฐ๋ธŒ๋Š” v-if์™€ v-show๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๋‘ ๊ฐ€์ง€ ๋””๋ ‰ํ‹ฐ๋ธŒ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค.

v-if VS v-show

v-if

๋””๋ ‰ํ‹ฐ๋ธŒ์˜ ๊ฐ’์ด true์ด๋ฉด ๋ Œ๋”๋ง ๋˜๊ณ  false์ด๋ฉด ๋ Œ๋”๋ง ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 2.1.0 ๋ฒ„์ „๋ถ€ํ„ฐ v-else-if ๋””๋ ‰ํ‹ฐ๋ธŒ๋„ ์ถ”๊ฐ€๋˜์–ด ๊ธฐ์กด์— if๋ฌธ์„ ์‚ฌ์šฉํ•˜๋˜๋Œ€๋กœ ๋””๋ ‰ํ‹ฐ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<template>
  <div>
    <span v-if="true">v-if</span>
    <span v-else-if="true">v-else-if</span>
    <span v-else>v-else</span>
  </div>
</template>

v-show

v-if์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋””๋ ‰ํ‹ฐ๋ธŒ ๊ฐ’์ด true์ผ ๋•Œ ๋ Œ๋”๋ง ๋ฉ๋‹ˆ๋‹ค.

<template>
  <div>
    <span v-show="true">๋ณด์ด๊ธฐ</span>
  </div>
</template>

nextTick

Vue์—์„œ nextTick์œผ๋กœ ๊ฐ์‹ผ ๋’ค callback์„ ํ†ตํ•ด DOM์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ ๊ฐฑ์‹  ํ›„ UI๊นŒ์ง€ ๋ Œ๋”๋งํ•œ ํ›„์— nextTick ํ•จ์ˆ˜๋ฅผ ์ตœ์ข…์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ๋‚œ ์งํ›„, UI๊ฐ€ ๊ฐฑ์‹ ๋  ๋•Œ DOM์„ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ํ˜„์ƒ์„ ๊ฐœ์„ ํ•˜๊ณ ์ž ์‚ฌ์šฉํ•œ๋‹ค.
ex.

// ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
vm.msg = 'Hello'
// ์•„์ง DOM ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
Vue.nextTick(function () {
  // DOM์ด ์—…๋ฐ์ดํŠธ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
});

์ฐจ์ด์ 

๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ v-if๋Š” ์‹ค์ œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ œ๊ฑฐ๋˜๊ณ  ์ƒ์„ฑ๋˜๋Š” ๋ฐ˜๋ฉด v-show๋Š” css์˜ display ์†์„ฑ๋งŒ ๋ณ€๊ฒฝ๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

๋งˆ์น˜๋ฉฐ

Refer

https://kr.vuejs.org/v2/guide/conditional.html
https://vuejs-kr.github.io/jekyll/update/2017/01/19/vuejs-nexttick-example/
https://kr.vuejs.org/v2/api/#Vue-nextTick
https://doozi316.github.io/vuejs/2020/08/10/Vue4/