Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

vue入門07(条件付きレンダリングを使う)

Last updated at Posted at 2024-06-08

v-ifとv-else

  • 真偽値により要素の表示と非表示を切り替えることができる

例題

  • 真偽値がtrueの時、YESと画面に表示
  • 真偽値がfalseの時、NOと画面に表示

trueの時

<div id="app">
    <p v-if="toggle">Yes</p>
  </div>
const app = Vue.createApp({
  data: () => ({
    toggle: true
  })
})
app.mount('#app')

スクリーンショット 2024-06-08 234644.png

falseの時

const app = Vue.createApp({
  data: () => ({
    toggle: false
  })
})
app.mount('#app')

スクリーンショット 2024-06-08 234804.png

  • なにも表示されない

falseの時、画面にNOと表示する

<div id="app">
    <p v-if="toggle">Yes</p>
    <p v-else>No</p>
  </div>
const app = Vue.createApp({
  data: () => ({
    toggle: false
  })
})
app.mount('#app')

スクリーンショット 2024-06-08 235108.png

  • Noが表示される

注意

  • v-elseディレクティブはv-showディレクティブと組み合わせて使用することはできない

v-else-ifを使う

  • Javascriptで言うところの、else ifに相当する

例題

  • 信号機の色の意味を出力するプログラム
  • red:Stop
  • yellow:Caution
  • blue:Go
  • それ以外:Not red/yellow/blue

Stopを表示

<div id="app">
    <p v-if="color === 'red'">Stop</p>
    <p v-else-if="color === 'yellow'">Caution</p>
    <p v-else-if="color === 'blue'">Go</p>
    <p v-else>Not red/yellow/blue</p>
  </div>
const app = Vue.createApp({
  data: () => ({
    color: 'red'
  })
})
app.mount('#app')

スクリーンショット 2024-06-08 235930.png

  • js側でcolor: 'red'と設定しているのでStopと表示

Cautionを表示

const app = Vue.createApp({
  data: () => ({
    color: 'yellow'
  })
})
app.mount('#app')

スクリーンショット 2024-06-09 000112.png

Goを表示

const app = Vue.createApp({
  data: () => ({
    color: 'blue'
  })
})
app.mount('#app')

スクリーンショット 2024-06-09 000223.png

それ以外を表示

const app = Vue.createApp({
  data: () => ({
    color: 'orange'
  })
})
app.mount('#app')

スクリーンショット 2024-06-09 000320.png

v-showを使う

  • 要素のdisplay CSSプロパティを切り替えることで、表示、非表示を切り替える

例題

  • 真偽値がtrueの時、Hello Vue.js!とページに表示する
  • 真偽値がfalseの時は、要素は非表示
  • ※要素のdisplay CSSプロパティを切り替える

表示

<div id="app">
    <p v-show="toggle">Hello Vue.js!</p>
  </div>
const app = Vue.createApp({
  data: () => ({
    toggle:true
  })
})
app.mount('#app')

スクリーンショット 2024-06-09 000949.png

非表示

const app = Vue.createApp({
  data: () => ({
    togglefalse
  })
})
app.mount('#app')

スクリーンショット 2024-06-09 001130.png
スクリーンショット 2024-06-09 001235.png

  • なにも表示されない
  • display:noneが追加されている

v-ifとv-showの違い

v-if

  • 要素をDOMから削除・追加
  • 高い切り替えコスト
  • v-else、v-else-ifが使える

v-show

  • CSS displayプロパティ
  • 高い初期描画コスト
  • v-else、v-else-ifが使えない
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?