Vue知识点总结(2)——v-for、v-if、v-show(超级详细)

news/2024/7/10 3:14:00 标签: vue, javascript, 前端, html

这篇文章我们了解一下v-for、v-if、v-show指令的用法,这三个指令都是常用的。顺便我们会讲解一道高频面试题:v-if和v-show的区别。

v-for

v-for在实际的业务开发中非常的普遍。我们在学习一些高级语言的时候都知道for循环通过循环我们可以遍历出数据规范相似的数据组
我们思考一个业务场景:在商城中,我们点击一种商品分类,会渲染出很多种规格类似的商品
如果渲染出20组商品就要写20个相同的组件吗?程序员必然不可能这么傻。
一个商品卡片的内容可能有图片、名字、价格、库存、商品描述。这20个商品都是这些字段,只是改变了字段的值而已。
所以,这就是v-for指令的作用所在。
我们使用v-for就可以用一种商品卡片的代码,渲染出无穷无尽的商品,只要我们想。
下面说一下基本的语法:

html"><div id="app">
    <ul>
        <li v-for="item in items">
            {{item}}
        </li>
    </ul>
</div>
<script type="text/html" title=javascript>javascript">html" title=javascript>javascript">
    var app = new Vue({
        el:'#app',
        data:{
            items:[59,82,96,41,55,2,4,91,25],
        },
    });
</script>

这就是v-for最基本的用法。v-for中的itemitems都可以任意改变,但是items必须与要渲染的数组名称相同。因为我data中的数组名字是items所以我这里也是写的items
先来看一下效果吧:
在这里插入图片描述
如果我们想要索引的话,就把v-for中的内容改为”(item,index) in items“即可。

html">       <ul>
            <li v-for="(item,index) in items">
               索引:{{index}},内容:{{item}}
            </li>
       </ul>

看一下效果:
在这里插入图片描述
在有些业务场景下,我们需要借助索引的帮助。
上面我们讲的是数组的渲染,下面我们说一下对象的渲染

html"><div id="app">
    <ul>
        <li v-for="item in Students">
            {{item.name}} - {{item.age}}
        </li>
    </ul>
</div>
<script type="text/html" title=javascript>javascript">html" title=javascript>javascript">
    var app = new Vue({
        el:'#app',
        data:{
            Students:[
                {
                    name:'Ray',
                    age:18
                },
                {
                    name:'Creator',
                    age:20
                },
                {
                    name:'Code',
                    age:3
                }
            ]
        },
</script>

先看一下结果吧:
在这里插入图片描述
渲染对象的代码形式和渲染数组很类似。我们在渲染数组的时候,插值表达式{{}}中只需要写item即可,但是渲染对象的时候,需要{{item.属性}},其实还是比较简单的。索引的用法和数组那里一样
因为篇幅有限,我们只是举了一个很小的例子,v-for的应用场景很广泛,可以给我们优化掉很多的代码量。

v-if

我们如何控制一个组件是否显示?其实有很多方法,但是html" title=vue>vue为我们提供的v-if非常好用。
基本代码如下:

html"><div id="app">
    <p v-if="msg">我被显示了</p>
</div>
<script>html" title=javascript>javascript">
    new Vue({
        el:'#app',
        data:{
            msg:true
        }
    });
</script>

我们在p标签上写了一个v-if,绑定了一个变量为msg。在data中,我们给msg赋值的布尔值true,所以,按理来说,这个p标签会被显示。
在这里插入图片描述
没有问题。
v-if用法很简单,但是应用场景也非常的广泛我们可以在很多的方法事件中,处理v-if绑定的变量值,用来控制组件的显示与隐藏。这个指令是非常非常重要的。

v-show

说起v-show,其实它的作用和v-if是一样一样的。但是它们又有着根本上的区别,这个区别在面试中经常被问道。
我们先写一下它的基本代码格式:

html"><div id="app">
    <p v-show="msg">我被显示了</p>
</div>
<script>html" title=javascript>javascript">
    new Vue({
        el:'#app',
        data:{
            msg:true
        }
    });
</script>

是不是和v-if一样一样的。
但是我们细细来观察一下。当我们把msg的值改为false的时候,打开F12,看一下代码。
在这里插入图片描述

在这里插入图片描述
页面上确实没有显示出内容。但是!!!在DOM结构中,这个p标签其实已经被挂载上去了,只是把CSS的display属性值改为了none!!!
我们用同样的操作,在看一下v-if的DOM结构
在这里插入图片描述
在这里插入图片描述
在p标签并没有被挂载到DOM上!!!
所以这是v-if和v-show最根本的区别,敲下黑板。这个知识点在一些基础面试中,出现率极高

v-if和v-show都有各自的应用场景,大家可以仔细思考一下,根据它们的特点,什么时候用v-if,什么时候用v-show。值得思考一下。

有微信小程序课设、毕设需求联系个人QQ:505417246

关注下面微信公众号,可以领取微信小程序、Vue、TypeScript、html" title=前端>前端、uni-app、全栈、Nodejs、Python等实战学习资料
在这里插入图片描述


http://www.niftyadmin.cn/n/1576614.html

相关文章

《一条狗的使命》观后感

《一条狗的使命》由W.布鲁斯.卡梅伦同名小说改编&#xff0c;讲述了一条狗经历的4次生命轮回&#xff0c;在不同的生命历程中的所见、所闻、所为&#xff0c;在第4次轮回后&#xff0c;最终又回到第一次轮回时为尚为幼年现已为暮年的主人身边的故事。 该部影片中&#xff0c;狗…

Vue知识点总结(3)——v-bind(超级详细)

v-bind指令的作用就是绑定数据和元素属性&#xff0c;应用也比较频繁。 它可以绑定在大部分组件的属性上。 <div id"app"><a v-bind:hrefres.url>{{res.name}}</a> </div> <script>var app new Vue({el:#app,data:{res:{name:百度,u…

2017阿里UCAN大会,听听大咖们都讲了啥

“到底人作为一个人类还留下什么呢&#xff0c;人类最宝贵的就是创造性的思维。创造性的思维最大的表现就在各位的工作当中&#xff0c;就是设计&#xff0c;就是用户体验。用创造性的思维来让人与人&#xff0c;或人与机器见面做更好的沟通&#xff0c;更有效的掌控这个世界&a…

Vue知识点总结(4)——v-on(超级详细)

v-on指令的作用其实就是绑定事件。 事件是JavaScript的灵魂&#xff0c;事件驱动着JavaScript程序的执行。 vue为我们提供了v-on指令用于绑定事件。 <button v-on:click"add">加分</button> <button click"reduce">减分</button>…

数字图像处理笔记与体会(二)——打开和显示图像

最近事情太多&#xff0c;比较忙&#xff0c;现在快五一了&#xff0c;赶紧记录一下。前面第一节讲了一些matlab的基础&#xff0c;这里着重讲一下图像的读入和显示。 1、多张图显示 这里的显示代码如下&#xff0c;在同一个窗口中&#xff0c;同时显示多幅图像&#xff0c;这个…

Vue知识点总结(5)——v-model(超级详细)

今天的内容是v-model 双向数据绑定是Vue的灵魂特点之一&#xff0c;v-model是完美的体现了Vue双向绑定的特点。 你可以用 v-model 指令在表单 input、textarea 及 select 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇&#xff0c;但…

JAVA之字母与相对应数字转换

26个字母大小写加起来就是52个。对应的数字范围 System.out.println((char)97);//aSystem.out.println((char)122);//zSystem.out.println((char)65);//ASystem.out.println((char)90);//Z小写的范围为97...122大写的为65...90//将字母转为数字 System.out.println("Z&quo…

Vue知识点总结(6)——侦听器watch(超级详细)

这期主题是watch侦听器。 我们在实际开发的时候&#xff0c;对于动态网页而言&#xff0c;大部分的数值都是在不断变化的&#xff0c;如果我们需要侦听某些数值的变化&#xff0c;用来做出对应处理&#xff0c;watch侦听器是个再好不过的选择。 <div id"app">…