Vue学习Day3 v-for遍历、组件的key属性、列表点击变色案例、书籍购物车案例

news/2025/2/27 10:27:26

想利用暑假时间好好学习一下vue,会记录每一天的学习内容。
今天是学习vue的第3天!

起起伏伏乃人生常态,继续加油~


学习内容

  • 1. v-for使用
    • v-for遍历数组
    • v-for遍历对象
    • 组件的key属性
  • 2.检测数组更新
  • 3.列表项点击变色简单案例
  • 4. 书籍购物车阶段小案例


1. v-for使用

v-for遍历数组

data: {
    names: ['name1','name2','name3','name4']
}
  • 1.如果在遍历过程中不需要索引值
<!-- 1.在遍历过程中,没有使用索引 -->
<ul>
	<li v-for="item in names">{{item}}</li>
</ul>

  • 2.如果在遍历过程中需要索引值
<!-- 2.在遍历过程中,需要拿到索引 -->
<!-- index就代表了取出的每个item在原数组的索引值 -->
<ul>
	<li v-for="(item,index) in names">{{index+1}}.{{item}}</li>
</ul>

v-for遍历对象

data: {
        info: {
            name: 'AIpoem',
            age: 18,
            height: 180
        }
}
  • 1.遍历对象过程中,如果只是获取一个值,那么该值是键值对中的value
<!-- 1,遍历对象过程中,如果只是获取一个值,那么该值是键值对中的value -->
<ul>
    <li v-for="item in info"></li>
</ul>
  • 2.获取key和value,格式:(value,key)
<!-- 2.获取key和value,格式:(value,key) -->
<ul>
    <li v-for="(value,key) in info">{{value}}--{{key}}</li>
</ul>
  • 3.获取key和value和index,格式:(value,key,index)
<!-- 3.获取key和value和index,格式:(value,key,index) -->
<ul>
    <li v-for="(value,key,index) in info">{{value}}--{{key}}--{{index}}</li>
</ul>

组件的key属性

Vue 正在更新使用 v-for 渲染的元素列表时,它默认使用“就地更新”的策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序,而是就地更新每个元素。

  • 官方推荐我们在使用v-for时,给对应的元素或组件添加一个key属性
  • 为什么需要这个key属性?
    • Vue虚拟DOM的Diff算法有关
  • 当某一层有很多相同的节点时,也就是列表节点时,我们希望插入一个新的节点
    比如下例:
    • 我们希望在BC之间加一个F
      在这里插入图片描述
    • Diff算法默认执行起来是将C更新成F,D更新成C,E更新成D,最后再插入E
      在这里插入图片描述
  • 所以我们需要使用key来给每个节点做一个唯一标识
    • Diff算法就可以正确的识别此节点,找到正确的位置区插入新的节点
      在这里插入图片描述
  • key的作用主要是为了高效地更新虚拟DOM
<div v-for="item in items" v-bind:key="item.id">
  <!-- 内容 -->
</div>

如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法。而使用 key 时,它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素。

⚠️:有相同父元素的子元素必须有独特的 key。重复的 key 会造成渲染错误。

(不要用index作为key)


2.检测数组更新

Vue是响应式的,所以当数据发生变化时,Vue会自动监测数据变化,视图会发生相应的更新

// 1.push() 数组最后插入元素
 this.letters.push('e');
// 2.pop()  删除数组最后一个元素
 this.letters.pop();
// 3.shift() 删除数组中第一个元素
 this.letters.shift();
// 4.upshift() 在数组最前面添加元素
this.letters.unshift('aaa');
// 5.splice() 删除元素/插入元素/替换元素
// 删除元素:第二个参数传入要删除几个元素(如果不传,则删除后面所有元素)
// 替换元素:第二个参数,表示我们要替换几个元素,后面是用于替换前面的元素
// 插入元素:第二个参数传入0,后面跟上要插入的几个元素
// splice(index,howmany,item)
this.letters.splice();
// 5.sort()排序
this.letters.sort();
// 6.reverse() 反转
this.letters.reverse();

// set(要修改的对象,索引值,修改后的值)
vue.set(this.letters,0,'bbb');

3.列表项点击变色简单案例

在这里插入图片描述

currentIndex初值为0,则index0li会展示成红色,当点击li的时候,将currentIndex改成当前index,那么就满足了active类的index == currentIndex条件,使得点击的该li可以拥有active


4. 书籍购物车阶段小案例

在这里插入图片描述

需要实现:按钮添加/删除数目,按钮移除条目,根据添加/删除操作实时变化总价格,当书籍全部被清空时,购物车消失
在这里插入图片描述在这里插入图片描述
主要用到了这两天学的v-on绑定事件,v-for循环条目,v-if和v-else判断购物车是否要消失,computed中计算总价格



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

相关文章

Vue学习Day4 v-model表单双向绑定、注册组件、组件模版分离、组件中的数据存放、组件中data为什么是个函数

想利用暑假时间好好学习一下vue&#xff0c;会记录每一天的学习内容。 今天是学习vue的第4天&#xff01; 起起伏伏乃人生常态&#xff0c;继续加油&#xff5e; 学习内容1. 表单绑定v-modelv-model原理v-model&#xff1a;radiov-model&#xff1a;checkboxv-model&#xff1a…

Myeclipse打开就出错Could not create the Java virtual machine

Myeclipse打开就出错Could not create the Java virtual machine 描述&#xff1a; JVM_terminted_Exit_code1图片&#xff1a;描述&#xff1a; Could_not create_the_Java_virtual_machine图片&#xff1a;myeclipse一启动就自动关闭&#xff0c;报错"Could not creat…

JavaScript高级程序设计 学习笔记3 - 语言基础

内容均摘自JavaScript高级程序设计第四版&#xff0c;仅用于记录学习过程。 虽然这一章都很基础&#xff0c;但是还是有很多小细节需要注意的&#xff01;好好看看吧&#xff5e;进一步细分了书里的目录&#xff0c;这样查询也更方便啦 第三章 语言基础一.语法3.1 语法3.1.1 区…

Myeclipse7.0安装时出现“灾难性故障”

Myeclipse7.0在安装过程中会报 “灾难性故障”&#xff0c;总结了一下&#xff0c;可能原因有一下几个方面 1. jdk版本和Myeclipse不兼容 解决方案&#xff1a;重新安装jdk新版本 2.安装路径的问题 解决方案&#xff1a;安装Myeclipse时&#xff0c;不修改其默认的安装路径…

mysql 的基本数据类型

数值类型 MySQL 的数值数据类型可以大致划分为两个类别&#xff0c;一个是整数&#xff0c;另一个是浮点数或小数。MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补。 表列出了各种数值类型以及它们的允许范围和占用的内存空间。 类型大小范围&#xff08;有符号&…

135,137,138,139,445端口作用

如果全是2000以上的系统,可以关闭137.138.139,只保留445 如果有98系统,可能以上四个端口全部要打开 无论你的服务器中安装的是Windows 2000 Server&#xff0c;还是Windows Server 2003&#xff0c;它们无一例外会在默认安装下开通135端口、137端口、138端口、139端口和445端口…

445/139端口的作用与危害

445端口&#xff08;Common Internet File System(CIFS)&#xff08;公共Internet文件系统&#xff09;&#xff09;是一个毁誉参半的端口&#xff0c;有了它我们可以在局域网中轻松访问各种共享文件夹或共享打印机&#xff0c;但也正是因为有了它&#xff0c;黑客们才有了可乘…

Thickbox的使用

1、父页面添加引用 link hrefthickbox.css relstylesheet typetext/css / script srcjquery-1.2.6.js typetext/javascript/script script srcthickbox.js typetext/javascript/script 2、父页面添加如下链接地址&#xff1a; a hrefTree3Status/ParamSel.aspx?keepThist 1、父…