零基础入门Vue之To be or not to be——条件渲染

这篇具有很好参考价值的文章主要介绍了零基础入门Vue之To be or not to be——条件渲染。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

温故

上一节:零基础入门Vue之皇帝的新衣——样式绑定

在前面的内容能了解到,Vue不仅仅能进行数据渲染还可以对样式进行绑定

并且他能随意的切换样式,但Vue的初衷就是尽量少让使用者操作dom节点

加入你要让指定dom显示或者不显示,该怎么办呢?以目前的东西来说,不拿到dom节点还是做不到的

因此,Vue提供了另外的办法去解决它:条件渲染

  • v-if
  • v-show

条件渲染之v-if

v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy 值的时候被渲染。

从官网上看,这个v-if指令理解起来也不难,就是说,想要显示就

<div v-if="true"></div>

不想显示就

<div v-if="false"></div>

v-if的基本用法

可以根据前面提到的原理,用一个变量去控制,毕竟双引号里面可以写js表达式

基于这个原理,实现一个点击按钮显示文字,再点击文字消失,再点击显示以此类推的效果


v-else与v-else-if

众所周知,在变成语言里面分支是依赖于if-else或者是if-else-if来控制的(switch、三目暂且不论)

Vue也提供了这一种方式,允许根据一定条件下来控制多个dom节点的显示或不显示

PS:如果要使用这种办法,dom节点必须连在一起不能拓展 且 当条件为false的时候这个dom会被删除,但为true的时候会添加进去

请看如下例子:利用Vue的条件渲染,实现判断密码是否输入错误、输入为空、输入正确,并且给出提示

具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="./vue.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="root">
        <input type="password" v-model="pwd" placeholder="enter you pwd."><br/>
        
        <span v-if="pwd==''">密码不能为空</span>
        <span v-else-if="pwd!=='123456'">密码错误</span>
        <span v-else >密码正确</span>
    </div>
</body>
<script>
    let vm = new Vue({
        el:"#root",
        data:{
            pwd:""
        },
    })
</script>
</html>

条件渲染之v-show

v-show与v-if不同,v-show是直接让节点不显示,但并不是删除

并且v-show没有其他的else,他就只有一个true显示false不显示

看代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="./vue.js"></script>
    <title>Document</title>
</head>
<body>
    <div id="root">
        <span v-show="show">Hello world</span><br/>
        <button @click="show=!show">点我显示文字</button>
    </div>
</body>
<script>
    let vm = new Vue({
        el:"#root",
        data:{
            show:false
        },
    })
</script>
</html>

我比较懒,直接搬了v-if的基本使用的代码,v-show的用法只有这一点,其他的也无非是在""里面写变量去控制显示不显示

打开浏览器的开发者调试工具可以看到当show为false时这个节点存在但他被隐藏了,但v-if是直接删除

ps:v-show比较适用于变动比较频繁的场合,变动不需要渲染很多东西


The End

下一篇:零基础入门Vue之影分身之术——列表渲染&渲染原理浅析文章来源地址https://www.toymoban.com/news/detail-825138.html

到了这里,关于零基础入门Vue之To be or not to be——条件渲染的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3报错:Extraneous non-props attributes (style) were passed to component but could not be automatical

    Vue3报错:Extraneous non-props attributes (style) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. 翻译是:无关的非道具属性(样式)被传递给组件,但由于组件呈现片段或文本根节点而无法自动继承。 出现这个 错误的原因 是在组件的节点

    2024年02月17日
    浏览(36)
  • 贪心算法解决To Fill or Not to Fill

    With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way from time to time. Different gas station may give different price. You are asked to carefully design the cheapest route to go. Each input file contains one test case. For each case, the first

    2024年02月21日
    浏览(43)
  • vue3警告Extraneous non-emits event listeners (XXX) were passed to component but could not be automatic

    vue3 警告Extraneous non-emits event listeners (selectMeth) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the “emits” option. 之所以出现这个警告,是因为在子组件向父组件发

    2024年02月09日
    浏览(45)
  • IDEA Kafka:Connection to node -2 could not be established. Broker may not be available

    IDEA Kafka:Connection to node -2 could not be established. Broker may not be available. IDEA 报错内容: 分析: 无法建立节点连接,Broker 不可用,需要考虑是 IDEA 连接出了问题,还是 Linux Kafka 服务出了问题 Linux Kafka 服务: Kafka 服务是否正常启动 检查 hosts 文件映射 IDEA 端: 本地 host 映射是否一

    2024年02月15日
    浏览(41)
  • ES 创建太多 buckets 错误: trying to create too many buckets. must be less than or equal to: [100000] but w

    ES 创建太多 buckets 错误: trying to create too many buckets. must be less than or equal to: [100000] but was [100001]. 错误描述: 一般的解决方法 调大 search.max_buckets 的值,在 kibana 中直接执行下列语句: 如果你的服务器能撑住,或者自身评估直接扩大并无问题,那么本文的阅读就可以到此为止

    2024年02月07日
    浏览(43)
  • Connection to node -1 (/127.0.0.1:9092) could not be established. Broker may not be available.

    #spring.kafka.listener.type=single spring.kafka.bootstrap-servers : 127.0.0.1:9092,127.0.0.1:9093,127.0.0.1:9094 spring.kafka.producer.retries = 1 spring.kafka.producer.acks = all spring.kafka.producer.batch-size = 16384 spring.kafka.producer.buffer-memory = 33554432 #spring.kafka.producer.client-id=hello-kafka spring.kafka.producer.key-serializer = org.apac

    2023年04月12日
    浏览(45)
  • org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned b

    在进行数据查询中爆出这个错误mybatis操作数据库时报错 错误原因可能是:因为查询结果的期望值为一条或者为空,但是实际上返回的值有两条 。 解决的办法有 : 1、检查数据库数据是否有错误(重复); 2、检查resultType 或resultMap中的数据类型是否和接口中的一致; 3、检查操

    2024年02月11日
    浏览(37)
  • 彻底解决ES 数据查询 from + size must be less than or equal to:xxx 问题

    ES分页查询时出现超过一万页就爆出这个错误:Result window is too large, from + size must be less than or equal to: [10000] but… 该错误是由于es默认设置最大页数为一万的原因导致的,这样设置也是为了防止OOM。 第一种解决方式: 防止这个错误出现是设置 index.max_result_window的值。但是这种

    2024年02月14日
    浏览(38)
  • Kafka【问题 03】Connection to node -1 (/IP:9092) could not be established. Broker may not be available.

    此问题仅出现在云服务器上,非云服务器未出现过一下报错: 非云服务器: 云服务器: 云服务器有两个IP,监听IP为云服务器IP,而advertised监听IP为云服务器的外网IP。

    2024年02月05日
    浏览(45)
  • Expected one result (or null) to be returned by selectOne(), but found: 3报错解决方案

    Expected one result (or null) to be returned by selectOne(), but found: 3 Expected one result (or null) to be returned by selectOne(), but found: 3 意思是“期望selectOne()返回一个结果(或null),但发现3个”这说明你的返回结果有三个对象,但是selectOne只能返回一个。 第一种方案:可以把selectOne更换为selectList,

    2023年04月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包