vue条件渲染

本文主要介绍了Vue.js中v-if和v-show的使用。v-if通过判断条件决定DOM元素是否存在于页面结构中,适用于切换频率低的场景,不展示的元素会被移除;v-show则是控制元素内容是否显示,元素结构已渲染,只是用样式隐藏,适用于切换频率高的场景。还提到使用v-if时元素可能无法获取,v-show一定能获取。

1. v-if

通过判断条件来决定自身所在的标签是否在页面结构中存在或消

,它会直接修改dom标签元素。决定整dom标签元素在页面结构

中的存在。

写法:

(1)v-if=“表达式”

(2)v-else-if=”表达式“

(3)v-else=”表达式“

**适用于:**切换频率较低的场景

**特点:**不展示的DOM元素直接被移除

**注意:**v-if可以和:v-else-if、v-else一起使用,但要求结构不能被”打断“

使用v-if做条件渲染 :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>条件渲染</title>
    <!--    引入vue-->
    <script type="text/javascript" src="/excise/src/vue2.0/daima/js/vue.js"></script>
</head>
<body>
<!--准备一个容器-->
<div id="root">
    <h2>当前的n值是:{{n}}</h2>
    <button @click="n++">点我n+1</button>
    
    <!--  使用v-if做条件渲染 -->
        <h2 v-if="false">欢迎来到{{name}}</h2>
     <!--  v-if语句中值可以为表达式 -->
        <h2 v-if="1===1">欢迎来到{{name}}</h2>
</div>

<script type="text/javascript">
    Vue.config.productionTip = false //阻止vue在启动时生成提示

    const vm = new Vue({
        el: "#root",
        data: {
            name: "尚硅谷",
            n: 0
        }
    })
</script>
</body>
</html>

使用v-if渲染< h2 >元素 if里面的值为 false 条件不成立 所以元素不渲染在页面中

v-else-if 和 v-else

在条件判断中还有v-else-if 和 v-else 它们的用法与原生的if else大致相同

在if表达式中的条件不成立 则继续判断else后面的条件 满足条件之后执行渲染

<body>
<!--准备一个容器-->
<div id="root">
    <h2>当前的n值是:{{n}}</h2>
    <button @click="n++">点我n+1</button>
    <!--  v-else-if和v-else   -->
      <div v-if="n===1">div1</div>
      <div v-else-if="n===1">div2</div>
      <div v-else-if="n===3">div3</div>
      <div v-else>没有啦</div>

        <!--  v-if与v-else-if  -->
       <!-- <template v-if="n===1">
            <h2>div1</h2>
            <h2>div2</h2>
            <h2>div3</h2>
        </template>-->
</div>

<script type="text/javascript">
    Vue.config.productionTip = false //阻止vue在启动时生成提示

    const vm = new Vue({
        el: "#root",
        data: {
            name: "尚硅谷",
            n: 0
        }
    })
</script>
</body>

2. v-show

v-show:通过条件判断标签内元素内容是否在页面当中显示,但是

本身的dom标签结构是已经渲染到页面结构当中的,只是隐藏内

容,即:将当前的标签样式设置为display:none

**写法:**v-show=”表达式“

**适用于:**切换频率较高的场景

**特点:**不展示的DOM元素未被移除,仅仅是使用样式隐藏掉

v-show与v-if用法相似,只是v-if不满足条件就不渲染元素,而v-show是渲染了所有元素和条件来控制元素是否显示

示例:

<body>
<!--准备一个容器-->
<div id="root">
    <h2>当前的n值是:{{n}}</h2>
    <button @click="n++">点我n+1</button>
   <!--  使用v-show做条件渲染 -->
    <h2 v-show="false">欢迎来到{{name}}</h2>
    <h2 v-show="1===1">欢迎来到{{name}}</h2>
</div>

<script type="text/javascript">
    Vue.config.productionTip = false //阻止vue在启动时生成提示

    const vm = new Vue({
        el: "#root",
        data: {
            name: "尚硅谷",
            n: 0
        }
    })
</script>
</body>

3.备注

使用v-if的时候,元素可能无法获取到,而使用v-show一定可以获取到

### Vue.js 条件渲染 `v-if` 和 `v-else` 在 Vue.js 中,条件渲染是一种常见的需求,可以通过 `v-if`、`v-else-if` 和 `v-else` 指令实现。这些指令允许开发者基于表达式的布尔值决定是否渲染某个 DOM 节点。 #### 1. 基础用法 以下是 `v-if` 的基础用法示例: ```html <template> <div> <!-- 当 show 为 true 时,会渲染 h1 --> <h1 v-if="show">Hello Vue.js!</h1> <!-- 切换按钮 --> <button @click="toggleShow">Toggle Show</button> </div> </template> <script> export default { data() { return { show: true, // 控制显示/隐藏状态 }; }, methods: { toggleShow() { this.show = !this.show; // 反转当前的 show 状态 }, }, }; </script> ``` 在这个例子中,当数据属性 `show` 的值为 `true` 时,`<h1>` 元素会被渲染到页面上;如果 `show` 的值变为 `false`,则 `<h1>` 将被移除[^2]。 --- #### 2. 多分支条件渲染 (`v-if`, `v-else-if`, `v-else`) 对于更复杂的场景,可以使用多个分支来处理不同的情况。例如: ```html <div id="app"> <!-- 如果 type === 'A' 渲染第一个 p --> <p v-if="type === 'A'">Type A</p> <!-- 否则如果 type === 'B' 渲染第二个 p --> <p v-else-if="type === 'B'">Type B</p> <!-- 默认情况下渲染第三个 p --> <p v-else>Other Type</p> </div> <script> const app = new Vue({ el: "#app", data: { type: "C", // 动态改变此变量测试不同效果 }, }); </script> ``` 在此代码片段中,`v-if` 配合 `v-else-if` 和 `v-else` 实现了一个三元逻辑结构。根据 `data.type` 的值变化,DOM 结构也会相应更新[^3]。 --- #### 3. 性能优化注意事项 虽然 `v-if` 提供了强大的功能,但在某些性能敏感的情况下需要注意其开销。每次切换 `v-if` 的条件都会触发完整的组件销毁和重建过程。相比之下,`v-show` 更适合频繁切换可见性的场景,因为它仅通过 CSS 属性调整元素的显示状态而不涉及重新渲染。 --- #### 4. 组件中的应用 除了普通的 HTML 元素外,还可以将 `v-if` 应用于自定义组件实例化过程中。例如: ```html <template> <div> <!-- 根据 isComponentVisible 决定是否加载子组件 --> <my-component v-if="isComponentVisible"></my-component> <button @click="toggleVisibility">Toggle Component Visibility</button> </div> </template> <script> import MyComponent from "./MyComponent.vue"; export default { components: { MyComponent }, data() { return { isComponentVisible: true, }; }, methods: { toggleVisibility() { this.isComponentVisible = !this.isComponentVisible; }, }, }; </script> ``` 这里展示了如何利用 `v-if` 对整个组件进行条件性挂载或卸载操作[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值