【笔记】vue课堂小作业之书籍购物车列表的增删改查小记

news2024/11/29 22:33:21

(一)reduce作迭代器

1. reduce 函数的基本用法

array.reduce((accumulator, currentValue) => { ... }, initialValue);

  • accumulator: 累积器,表示当前累积的值,通常在第一次时为 initialValue。(总数sum)
  • currentValue: 当前数组正在遍历的元素。(遍历元素item)
  • initialValue: reduce 的初始值,在第一次迭代时作为 accumulator 的初始值。(一般为0)

在你的代码中:

  • sum 是累积器,表示当前累积的书的数量。
  • item 是当前数组的元素,表示每一本书。
  • 0reduce 的初始值,即累积器 sum 初始为 0。

代码例子

学习时的疑问

为什么不能调换 sumitem

不能调换 sumitem 的位置。因为 reduce 的设计是将累积的值作为第一个参数,当前元素作为第二个参数。如果调换了两者位置,函数的逻辑就会出错,无法正确累加。

为什么括号后面要跟一个 0

0reduce 的初始值,表示累积器 sum 的初始值。如果你不设置初始值,reduce 会将数组的第一个元素作为初始值,第二个元素作为第一个遍历的 currentValue。在你的例子中,累加的是数量(num),所以初始值 0 是合理的,因为它表示还没有累积任何数量。

(二)vue页面购物车数据本地化二三事

A. 前置准备:

定义常量books作为书籍列表:

·JSON.parse() 转类型 恢复数据原本的类型

·localStore.getItem(‘要获取的键值’)  从本地中取值

·localStore.setItem('要存储的键值',JSON.stringify(要转型的对象 一般是this.前面的键值))  从本地中存值

学时疑问:

1.为什么 bookList: JSON.parse(localStorage.getItem('bookList')) 这样写?

因为bookList 是一个属性,它的值是 JSON.parse(localStorage.getItem('bookList'))

JSON.parse(localStorage.getItem('bookList'))结果是一个值,不需要额外用花括号包裹。

如果 JSON.parse() 之后的结果是数组或对象,这就是最终赋值给 bookList 的内容,所以不需要额外的花括号

2.为什么不需要花括号?

花括号 {} 在 JavaScript表示对象的字面量。如果你想定义一个空对象或复杂对象,才需要使用 {}。但是,在这里,bookList 已经是一个值(解析后的对象或数组),并不需要额外的花括号。

3. .parse()方法的定义/作用是?(在此例子中为了取值)

JSON.parse(...): 将 localStorage 中的 bookList 数据(这是一个字符串形式的 JSON)解析回 JavaScript 对象JSON.parse() 用于将存储的字符串转换为原来的数据结构(如数组或对象)。

接上图的后半代码 

|| books: 如果 localStorage 中没有存储 bookList(即 localStorage.getItem('bookList') 返回 null),那么使用 books 作为默认值。books是一个定义好的默认书籍列表。

B.内置方法:

 deep:true(深度监视)的基本用法

watch 是 Vue.js 提供的一个侦听属性变化的机制,它允许你监听某个数据属性的变化,并在变化时执行相应的代码。它特别适用于需要在数据变化时进行异步操作或处理副作用的场景,比如更新 localStorage

deep: true: 这是一个选项,表示进行深度监听。当你监听的属性是一个对象或数组时,Vue 默认只监听该对象或数组的引用,而不会监听它内部的深层变化。如果你希望监听对象内部的属性变化,就需要使用 deep: true。在这种情况下,bookList 是一个数组,因此启用深度监听意味着数组中的元素(比如每本书)发生变化时,也会触发 watch

代码例子:

写在computed中

  • bookList: 这是你要监听的数据属性。在 Vue 的实例中,bookList 可能是你的一个状态属性,包含了多个书籍的列表信息。

  • handler(newValue): 这是回调函数,newValuebookList 发生变化后的新值。每当 bookList 或其内部内容发生变化时(无论是添加、删除书籍,还是修改其中某个书的属性),都会调用这个 handler 函数。

localStorage.setItem

handler 函数中,调用了 localStorage.setItem('bookList', JSON.stringify(this.bookList)),其作用是将当前的 bookList 保存到浏览器的 localStorage

  • localStorage.setItem:这是浏览器的 localStorage API,用来存储数据。它的第一个参数是存储项的键名 'bookList',第二个参数是存储的值,这里通过 JSON.stringifybookList 转换成了字符串格式

  • this.bookList:指向当前 Vue 实例中的 bookList,这个 bookList 是 JSON.stringify 之后被存储到 localStorage 的。

  • JSON.stringify(this.bookList)在这里是为了存值到本地 故转化为JSON格式的数据 而A中前置准备是为了取值 故将bookList变回原本的样子(使用.parse())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2215649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV高级图形用户界面(8)在指定的窗口中显示一幅图像函数imshow()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在指定的窗口中显示一幅图像。 函数 imshow 在指定的窗口中显示一幅图像。如果窗口是以 cv::WINDOW_AUTOSIZE 标志创建的,图像将以原…

遵循国药准字,确保益安宁丸疗效与安全

益安宁丸真品辨别唯一标准 益安宁丸为同溢堂药业有限公司所独家生产的一款中成药,在内地市场和港澳地区均有上市。 益安宁丸真品的唯一标准:无论港版还是内地版,包装盒必然有国药准字Z20063087标识,但凡没有国药准字标识的必为假…

性价比最高的开放式耳机,五大热门品牌开放式耳机

在当今快节奏的生活环境中,开放式耳机以其独特的开放式设计,既能让用户享受高质量的音乐,又能保持对外界环境的感知,逐渐成为市场上的新宠。然而,面对众多品牌和型号,如何选择一款性价比高的开放式耳机成为…

IDEA 编译报错 “java: 常量字符串过长” 的解决办法

目录 一、问题描述二、问题原因2.1 理论角度2.2 源码角度 三、解决方案解决方案①:StringBuilder 拼接解决方案②:读取文件内容 四、方案验证 在线文本换行工具: https://lzltool.cn/Toolkit/WrapWordsInText 一、问题描述 今天在开发过程中…

JavaScript全面指南(五)

​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript全面指南 目录 81、ES6 class关键字原理跟function什么区别 82、如何检…

Vue(3) 组件

文章目录 对组件的理解单文件组件非单文件组件基本使用几个注意点组件的嵌套VueComponent构造函数一个重要的内置关系 组件的自定义事件全局事件总线安装全局事件总线使用事件总线解绑事件消息订阅与发布简介使用步骤范例 $nextTick插槽1.默认插槽2.具名插槽作用域插槽 对组件的…

某市驾驶培训监管服务平台 GreatSQL 数据库适配之旅

某市驾驶培训监管服务平台 GreatSQL 数据库适配之旅 一、项目背景 某市驾培系统主要为社会公众提供驾培单位查询和学车报名,为相关合作单位提供某市驾培监管、某市驾培考核等功能。业务信息教练车培训过程视频信息、包括培训机构基本信息、教练员基本信息和学员个…

从零创建苹果App应用,不知道怎么申请证书的可以先去看我的上一篇文章

用大家自己的开发者账户,登录进入App Store Connect ,注册自己的应用 进入之后,点击增加 填写相关的信息 一切顺利的话,就可以来到这个页面

【Java】画心形图形

开始看到的是这个爱心图形,挺好看的(感谢这些前端巨佬): HTML流光爱心_爱心代码html-CSDN博客 本来想着自己看下这个源代码能不能实现,看了下源代码其实非常复杂。 在看代码的过程中发现,源代码里边给出…

5: Euclid‘s Game

题意分析:给定数列(A,B)(A>B),任取两数之差,若不含于数列(A,B)则添加得(A.B,C)重复任取两数之差且不重复得(A,B,C,...)…

【汇编语言】寄存器(内存访问)(二)—— DS和[address]

前言 📌 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。但仅仅从课程的角度出发就太片面了,其实学习汇编语言可以深入理解计算机底层工作原理,提升代码效率,尤其在嵌入式系统和性能优…

微信外卖小程序(lw+演示+源码+运行)

摘 要 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作…

【优选算法】(第四十一篇)

目录 被围绕的区域(medium) 题目解析 讲解算法原理 编写代码 迷宫中离⼊⼝最近的出⼝(medium) 题目解析 讲解算法原理 编写代码 被围绕的区域(medium) 题目解析 1.题目链接:. - 力扣&a…

DevExpress WPF中文教程:Data Grid(数据网格)实现细节一览

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

LLM - 配置 ModelScope SWIFT 测试 Qwen2-VL 视频微调(LoRA) 教程(3)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/142882496 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 SWIFT …

Java项目:155 ssm高校学生管理系统(含论文+说明文档)

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 高校学生管理系统有管理员,教师,学生三个角色。 ​ 有个人中心,教师管理,学生管理&#xff0…

Spring MVC:精通JSON数据返回的几种高效方式

前言 在实际开发中,我们在前后端传送数据通常使用Json格式,而在Spring MVC中返回Json格式的方式有多种,接下来我将介绍其中一些。 准备工作 为了演示Json格式的数据,我们准备一个实体类,例如User,这些可以测…

Ubantu配置net8.0环境

1、下载net8.0SDK包 下载地址:Download .NET 8.0 (Linux, macOS, and Windows) 下载命令: wget https://download.visualstudio.microsoft.com/download/pr/853490db-6fd3-4c17-ad8e-9dbb61261252/3d36d7d5b861bbb219aa1a66af6e6fd2/dotnet-sdk-8.0.4…

“DataOps+大模型”——数造科技在大模型时代的数据开发创新探索

写在前面 自《“数据要素x”三年行动计划》印发以来,各界积极投身于探索数据开发的新技术、新应用场景和新模式,力求通过挖掘数据要素的价值来推动新型生产力的蓬勃发展。在这个过程中,以大模型为核心的人工智能技术为数据开发工作带来了全新…

中学数学教学期刊是核心期刊吗?

中学数学教学期刊是核心期刊吗? 《中学数学教学》不是核心期刊,属于省级期刊。 该期刊由安徽省教育厅主管,合肥师范学院、安徽师范大学数学系、安徽省数学学会主办。 虽然它在中学数学教育领域有一定的影响力,被中国国家哲学社…