Vue 中的 v-if、v-else 和 v-else-if 條件渲染

前言

當你在使用 Vue.js 開發應用時,控制顯示或隱藏元素是一個常見的需求。Vue.js 提供了 v-ifv-elsev-else-if 指令,讓你能夠根據條件動態顯示內容。以下是這些指令的介紹及使用範例。

v-if

v-if 指令用來根據條件來顯示或隱藏元素。當條件為 true 時,該元素會被渲染;當條件為 false 時,該元素不會被渲染。

1
2
3
4
5
6
<template>
<div class="text-right">
<button type="button" @click="toggle">切換顯示</button>
<p v-if="isVisible">這是一段顯示的文本。</p>
</div>
</template>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script>
export default {
data() {
return {
isVisible: false
};
},
methods: {
toggle() {
this.isVisible = !this.isVisible;
}
}
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
import { ref } from 'vue';

export default {
setup() {
const isVisible = ref(false);

const toggle = () => {
isVisible.value = !isVisible.value;
};

return {
isVisible,
toggle
};
}
};
</script>
1
2
3
4
5
6
7
8
9
<script setup>
import { ref } from 'vue';

const isVisible = ref(false);

const toggle = () => {
isVisible.value = !isVisible.value;
};
</script>

在這個範例中,當按鈕被點擊時,isVisible 的值會在 truefalse 之間切換,從而控制 <p> 標籤的顯示。

v-if

v-else

v-else 是用於在 v-if 的條件不滿足時顯示的元素。它必須緊接在 v-ifv-else-if 的元素之後。

1
2
3
4
5
6
7
<template>
<div class="text-right">
<button @click="toggle">切換顯示</button>
<p v-if="isVisible">目前為 true</p>
<p v-else>目前為 false</p>
</div>
</template>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script>
export default {
data() {
return {
isVisible: false
};
},
methods: {
toggle() {
this.isVisible = !this.isVisible;
}
}
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
import { ref } from 'vue';

export default {
setup() {
const isVisible = ref(false);

const toggle = () => {
isVisible.value = !isVisible.value;
};

return {
isVisible,
toggle
};
}
};
</script>
1
2
3
4
5
6
7
8
9
<script setup>
import { ref } from 'vue';

const isVisible = ref(false);

const toggle = () => {
isVisible.value = !isVisible.value;
};
</script>

在這個範例中,當 isVisiblefalse 時,v-else 將顯示替代文本。

v-if & v-else

v-else-if

v-else-if 讓你可以在多個條件之間進行檢查。它必須在 v-ifv-else 的元素之後使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<template>
<div>
<button @click="setStatus('A')">狀態 A</button>
<button @click="setStatus('B')">狀態 B</button>
<button @click="setStatus('C')">狀態 C</button>

<p v-if="status === 'A'">當前狀態是 A。</p>
<p v-else-if="status === 'B'">當前狀態是 B。</p>
<p v-else>當前狀態是 C。</p>
</div>
</template>

<script>
export default {
data() {
return {
status: 'C'
};
},
methods: {
setStatus(newStatus) {
this.status = newStatus;
}
}
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script>
export default {
data() {
return {
status: 'C'
};
},
methods: {
setStatus(newStatus) {
this.status = newStatus;
}
}
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
import { ref } from 'vue';

export default {
setup() {
const status = ref('C');

const setStatus = (newStatus) => {
status.value = newStatus;
};

return {
status,
setStatus
};
}
};
</script>
1
2
3
4
5
6
7
8
9
<script setup>
import { ref } from 'vue';

const status = ref('C');

const setStatus = (newStatus) => {
status.value = newStatus;
};
</script>

在這個範例中,根據按下的按鈕修改 status 的值,並顯示相應的文本。

v-if & v-else & v-else-if

總結

  • v-if 用於條件渲染,如果條件成立則顯示元素。
  • v-else 用於在 v-if 條件不成立時顯示替代內容。
  • v-else-if 可以用於多重條件判斷,允許在多個條件之間進行選擇。

這些指令的組合使得 Vue.js 的條件渲染變得非常靈活與強大,讓你能夠根據不同的情境控制顯示內容。希望這些範例能幫助你更好地理解如何在 Vue.js 中使用 v-ifv-elsev-else-if