๐ŸŽจFrontEnd/Vue

vue 3 - v-if, v-show

IOTrue 2023. 7. 12. 00:15

๐Ÿ˜Ž vue 3 - v-if, v-show

composition API๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค

โœ…  v-if

v-if, v-else-if, v-else๋ฅผ ํ†ตํ•ด ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋””๋ ‰ํ‹ฐ๋ธŒ ๋ณ„๋กœ ํ˜•์ œ ๋ธ”๋Ÿญ์ด๋ฉด์„œ ์ธ์ ‘ํ•ด์•ผ ํ•œ๋‹ค

<div v-if="text === 'A'">
  A
</div>
<div v-else-if="text === 'B'">
  B
</div>
<div v-else-if="text === 'C'">
  C
</div>
<div v-else>
  A/B/C ๋ชจ๋‘ ์•„๋‹˜
</div>

const text = ref("D")

// ์•„๋ž˜์™€ ๊ฐ™์ด ๋ Œ๋”๋ง๋œ๋‹ค
<div> A/B/C ๋ชจ๋‘ ์•„๋‹˜ </div>

 

โœ…  v-show

์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์กฐ๊ฑด๋ถ€๋กœ ํ‘œ์‹œํ•˜๋Š” ๋‹ค๋ฅธ ์˜ต์…˜์ด๋ฉฐ ์‚ฌ์šฉ๋ฒ•์€ v-if์™€ ๋Œ€์ฒด๋กœ ๋™์ผํ•˜๋‹ค

<div v-show="show">v-show!</div>

const show = ref(false)

// ์•„๋ž˜์™€ ๊ฐ™์ด ๋žœ๋”๋ง๋œ๋‹ค
<div style="display: none;">v-show!</div>

v-show์˜ ์—˜๋ฆฌ๋จผํŠธ๋Š” ํ•ญ์ƒ ๋ Œ๋”๋ง ๋˜๋ฉด์„œ DOM์— ๋‚จ์•„ ์žˆ๊ณ  display CSS ์†์„ฑ์œผ๋กœ ์ „ํ™˜ํ•œ๋‹ค

 

โœ…  v-if vs v-show

v-if

v-if๋Š” ์‹ค์ œ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค
์กฐ๊ฑด์— ๋งž๋Š” ๊ฒฝ์šฐ์—๋งŒ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋ฉฐ ์ดˆ๊ธฐ ์กฐ๊ฑด์ด false๋ผ๋ฉด ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค
์ฆ‰, ์กฐ๊ฑด์ด true๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋ Œ๋”๋ง๋˜์ง€ ์•Š๋Š”๋‹ค

v-show

์ด์— ๋น„ํ•ด v-show๋Š” ๋ฐฉ์‹์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๋‹ค
์—˜๋ฆฌ๋จผํŠธ๋Š” CSS์˜ display ์†์„ฑ ๊ธฐ๋ฐ˜์œผ๋กœ ์ „ํ™˜๋˜๋ฉฐ ์ดˆ๊ธฐ ์กฐ๊ฑด๊ณผ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ๋ Œ๋”๋ง๋œ๋‹ค
์ฆ‰, ์—˜๋ฆฌ๋จผํŠธ๋Š” ํ•ญ์ƒ ๋ Œ๋”๋ง๋˜๋ฉฐ css๋กœ ์ œ์–ดํ•œ๋‹ค

Q. ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์–ด๋–ค ๊ฒƒ์„ ์‚ฌ์šฉํ• ๊นŒ?

์ผ๋ฐ˜์ ์œผ๋กœ v-if๋Š” ์ „ํ™˜ ๋น„์šฉ์ด ๋” ๋†’๊ณ , v-show๋Š” ์ดˆ๊ธฐ ๋ Œ๋”๋ง ๋น„์šฉ์ด ๋” ๋†’๋‹ค
๋”ฐ๋ผ์„œ ์ž์ฃผ ์ „ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(ex- Toggle) v-show๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ,
์‹คํ–‰ ์ค‘์— ์กฐ๊ฑด์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ v-if๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ๋ฉด์—์„œ ํšจ์œจ์ ์ด๋‹ค

 

 

 

https://v3-docs.vuejs-korea.org/guide/essentials/conditional.html

 

์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง | Vue.js

 

v3-docs.vuejs-korea.org