Vue3 学习笔记(Day6)

news2024/11/16 17:30:30

「写在前面」

本文为尚硅谷禹神 Vue3 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容:
1. Vue3 学习笔记(Day1)
2. Vue3 学习笔记(Day2)
3. Vue3 学习笔记(Day3)
4. Vue3 学习笔记(Day4)
5. Vue3 学习笔记(Day5)


目录

  • 7 其它 API
    • 7.1 shallowRef 与 shallowReactive
    • 7.2 readonly 与 shallowReadonly
    • 7.3 toRaw 与 markRaw
    • 7.4 customRef
  • 8 Vue3 新组件
    • 8.1 Teleport
    • 8.2 Suspense
    • 8.3 全局API转移到应用对象
    • 8.4 其他

7 其它 API

7.1 shallowRef 与 shallowReactive

P64:https://www.bilibili.com/video/BV1Za4y1r7KE?p=64

shallowRef

作用:创建一个响应式数据,但只对顶层属性进行响应式处理。

用法:

let myVar = shallowRef(initialValue);

特点:只跟踪引用值的变化,不关心值内部的属性变化。

shallowReactive

作用:创建一个浅层响应式对象,只会使对象的最顶层属性变成响应式的,对象内部的嵌套属性则不会变成响应式的

用法:

const myObj = shallowReactive({ ... });

特点:对象的顶层属性是响应式的,但嵌套对象的属性不是。

总结

通过使用 shallowRef()shallowReactive() 来绕开深度响应。浅层式 API 创建的状态只在其顶层是响应式的,对所有深层的对象不会做任何处理,避免了对每一个内部属性做响应式所带来的性能成本,这使得属性的访问变得更快,可提升性能。

7.2 readonly 与 shallowReadonly

P65:https://www.bilibili.com/video/BV1Za4y1r7KE?p=65

readonly

作用:用于创建一个对象的深只读副本。

用法:

const original = reactive({ ... });
const readOnlyCopy = readonly(original);

特点:

  • 对象的所有嵌套属性都将变为只读。
  • 任何尝试修改这个对象的操作都会被阻止(在开发模式下,还会在控制台中发出警告)。

应用场景:

  • 创建不可变的状态快照。
  • 保护全局状态或配置不被修改。

shallowReadonly

作用:与 readonly 类似,但只作用于对象的顶层属性。

用法:

const original = reactive({ ... });
const shallowReadOnlyCopy = shallowReadonly(original);

特点:

  • 只将对象的顶层属性设置为只读,对象内部的嵌套属性仍然是可变的。
  • 适用于只需保护对象顶层属性的场景。

7.3 toRaw 与 markRaw

P66:https://www.bilibili.com/video/BV1Za4y1r7KE?p=66

toRaw

作用:用于获取一个响应式对象的原始对象, toRaw 返回的对象不再是响应式的,不会触发视图更新。

官网描述:这是一个可以用于临时读取而不引起代理访问/跟踪开销,或是写入而不触发更改的特殊方法。不建议保存对原始对象的持久引用,请谨慎使用。

何时使用? —— 在需要将响应式对象传递给非 Vue 的库或外部系统时,使用 toRaw 可以确保它们收到的是普通对象

具体编码:

import { reactive,toRaw,markRaw,isReactive } from "vue";

/* toRaw */
// 响应式对象
let person = reactive({name:'tony',age:18})
// 原始对象
let rawPerson = toRaw(person)


/* markRaw */
let citysd = markRaw([
{id:'asdda01',name:'北京'},
{id:'asdda02',name:'上海'},
{id:'asdda03',name:'天津'},
{id:'asdda04',name:'重庆'}
])
// 根据原始对象citys去创建响应式对象citys2 —— 创建失败,因为citys被markRaw标记了
let citys2 = reactive(citys)
console.log(isReactive(person))
console.log(isReactive(rawPerson))
console.log(isReactive(citys))
console.log(isReactive(citys2))

markRaw

作用:标记一个对象,使其「永远不会」变成响应式的。

例如使用mockjs时,为了防止误把mockjs变为响应式对象,可以使用 markRaw 去标记mockjs

编码:

/* markRaw */
let citys = markRaw([
{id:'asdda01',name:'北京'},
{id:'asdda02',name:'上海'},
{id:'asdda03',name:'天津'},
{id:'asdda04',name:'重庆'}
])
// 根据原始对象citys去创建响应式对象citys2 —— 创建失败,因为citys被markRaw标记了
let citys2 = reactive(citys)

7.4 customRef

P67:https://www.bilibili.com/video/BV1Za4y1r7KE?p=67

作用:创建一个自定义的ref,并对其依赖项跟踪和更新触发进行逻辑控制。

实现防抖效果(useSumRef.ts):

import {customRef } from "vue";

export default function(initValue:string,delay:number){
let msg = customRef((track,trigger)=>{
let timer:number
return {
get(){
track() // 告诉Vue数据msg很重要,要对msg持续关注,一旦变化就更新
return initValue
},
set(value){
clearTimeout(timer)
timer = setTimeout(() => {
initValue = value
trigger() //通知Vue数据msg变化了
}, delay);
}
}
})
return {msg}
}

8 Vue3 新组件

8.1 Teleport

P68:https://www.bilibili.com/video/BV1Za4y1r7KE?p=68

什么是Teleport?—— Teleport 是一种能够将我们的组件html结构移动到指定位置的技术。

<teleport to='body' >
<div class="modal" v-show="isShow">
<h2>我是一个弹窗</h2>
<p>我是弹窗中的一些内容</p>
<button @click="isShow = false">关闭弹窗</button>
</div>
</teleport>

8.2 Suspense

P69:https://www.bilibili.com/video/BV1Za4y1r7KE?p=69

  • 等待异步组件时渲染一些额外内容,让应用有更好的用户体验
  • 使用步骤:
    • 异步引入组件
    • 使用 Suspense包裹组件,并配置好 defaultfallback
<template>
<div class="app">
<h3>我是App组件</h3>
<Suspense>
<template v-slot:default>
<Child/>
</template>
<template v-slot:fallback>
<h3>加载中.......</h3>
</template>
</Suspense>
</div>
</template>

8.3 全局API转移到应用对象

P70:https://www.bilibili.com/video/BV1Za4y1r7KE?p=70

  • app.component
  • app.config
  • app.directive
  • app.mount
  • app.unmount
  • app.use

8.4 其他

P71:https://www.bilibili.com/video/BV1Za4y1r7KE?p=71

  • 过渡类名 v-enter 修改为 v-enter-from、过渡类名 v-leave 修改为 v-leave-from
  • keyCode 作为 v-on 修饰符的支持。
  • v-model 指令在组件上的使用已经被重新设计,替换掉了 v-bind.sync。
  • v-ifv-for 在同一个元素身上使用时的优先级发生了变化。
  • 移除了 $on$off$once 实例方法。
  • 移除了过滤器 filter
  • 移除了 $children 实例 propert
    ......

「结束」
alt

本文由 mdnice 多平台发布

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

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

相关文章

【字典树】【KMP】【C++算法】3045统计前后缀下标对 II

作者推荐 动态规划的时间复杂度优化 本文涉及知识点 字符串 字典树 KMP 前后缀 LeetCode:3045统计前后缀下标对 II 给你一个下标从 0 开始的字符串数组 words 。 定义一个 布尔 函数 isPrefixAndSuffix &#xff0c;它接受两个字符串参数 str1 和 str2 &#xff1a; 当 st…

【Python】PyGameUI控件

哈里前段时间写了一个windows平板上自娱自乐&#xff08;春节和家人一起玩&#xff09;基于pygame的大富翁游戏。 pygame没有按钮之类的UI控件&#xff0c;写起来不怎么顺手。就自己写一个简单的框架。 仓库地址 哈里PygameUi: pygame ui封装自用 (gitee.com) 使用示例 示…

民爆5G智能制造工厂数字孪生可视化平台,推进民爆工业数字化转型

民爆5G工厂智能制造数字孪生可视化平台&#xff0c;推进行业数字化转型。民爆行业作为国家经济发展的重要支柱产业&#xff0c;其数字化转型对于提高生产效率、降低成本、保障安全等方面具有重要意义。而民爆5G工厂智能制造数字孪生可视化平台正是推进行业数字化转型的关键技术…

网络编程 io_uring

io_uring 1、概述 io_uring是Linux&#xff08;内核版本在5.1以后&#xff09;在2019年加入到内核中的一种新型的异步I/O模型&#xff1b; io_uring使用共享内存&#xff0c;解决高IOPS场景中的用户态和内核态的切换过程&#xff0c;减少系统调用&#xff1b;用户可以直接向…

BioTech - 大分子药物设计 概述

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/136302202 大分子药物设计领域主要包括3个方面&#xff0c;即大环类药物设计、蛋白质与多肽类药物设计、核酸药物设计等&#xff0c;具体如下&…

计算机设计大赛 深度学习实现行人重识别 - python opencv yolo Reid

文章目录 0 前言1 课题背景2 效果展示3 行人检测4 行人重识别5 其他工具6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的行人重识别算法研究与实现 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c…

JavaScript数据类型 检测数据类型 数据类型转换 数值相等比较

数值相等比较 JavaScript 提供三种不同的值比较运算&#xff1a; ——严格相等&#xff08;三个等号&#xff09; ——宽松相等&#xff08;两个等号&#xff09; 8种数据类型 前七种为基础数据类型。 Object类型为引用数据类型。 数据类型概念以及存储方式 let a {name:…

文本描述,简介

文章目录 需求分析要点剖析源码 需求 实现如下效果 分析 要点剖析 标题字体可以用 h1、h2、h3段落标签用 p 标签涉及到开头空两个格的使用 text-indent:2em;&#xff0c;如下&#xff1a; DIV、P标签首行缩进 <div style"text-indent:2em;">缩进的内容<…

《互联网的世界》第三讲-tcp

dns 找到了地址&#xff0c;spf 确定了路径&#xff0c;如何运输数据呢&#xff1f;今天讲 tcp。 计算机网络领域的特定技术是最后当你干这个事时才要用的&#xff0c;我对孩子们这样说&#xff0c;实际上你可以随便看一个快递单子来理解端到端传输协议。 源地址&#xff0c…

【k8s配置与存储--配置管理】

1、ConfigMap的配置 1.1 ConfigMap介绍 ConfigMap 是一种 API 对象&#xff0c;用来将非机密性的数据保存到键值对中。使用时&#xff0c; Pod 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。 ConfigMap 将你的环境配置信息和容器镜像解耦&#xff0c;便于应用配…

GEE入门篇|图像处理(二):在Earth Engine中进行波段计算

目录 波段计算 1.NDVI的计算 2.NDVI 归一化差值的单次运算计算 3.使用 NDWI 的归一化差值 波段计算 许多指数可以使用 Earth Engine 中的波段运算来计算。 波段运算是对图像中两个或多个波段进行加、减、乘或除的过程。 在这里&#xff0c;我们将首先手动执行此操作&#x…

Day06:基础入门-抓包技术HTTPS协议APP小程序PC应用WEB转发联动

目录 HTTP/HTTPS协议抓包工具 Web浏览器抓包 APP应用抓包 WX小程序&PC应用抓包 思维导图 章节知识点&#xff1a; 应用架构&#xff1a;Web/APP/云应用/三方服务/负载均衡等 安全产品&#xff1a;CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等 渗透命令&#xff1a;文件上传下载…

scons,一个实用的 Python 构建工具!

目录 前言 什么是SCons库&#xff1f; 安装SCons库 使用SCons库 SCons库的功能特性 1. 基于Python的构建描述语言 2. 自动化依赖管理 3. 多种构建环境支持 SCons库的应用场景 1. C/C项目构建 2. Python项目构建 3. 嵌入式系统开发 4. 持续集成环境 5. 跨平台项目构建 总…

云服务器比价之阿里云PK腾讯云,看看哪家便宜?

2024年阿里云服务器和腾讯云服务器价格战已经打响&#xff0c;阿里云服务器优惠61元一年起&#xff0c;腾讯云服务器62元一年&#xff0c;2核2G3M、2核4G、4核8G、8核16G、16核32G、16核64G等配置价格对比&#xff0c;阿腾云atengyun.com整理阿里云和腾讯云服务器详细配置价格表…

用人才测评来招聘,以及团队组建和优化

HR招聘流程&#xff1a;发布招聘信息&#xff0c;收集求职者的简历&#xff0c;筛选简历&#xff0c;线上&#xff08;人才测评&#xff09;&#xff0c;线下安排面试&#xff0c;线上&#xff08;人才测评&#xff09;&#xff0c;线下面试&#xff0c;&#xff08;线上人才测…

33-k8s项目实战-02-k8s的ca证书有效期更新

一、概述 我们知道&#xff0c;k8s各项组件之间的通信&#xff0c;都是使用https协议进行的&#xff0c;也就是ca证书&#xff0c;那么我们也知道ca证书都是有“有限期的”&#xff0c;一旦过期&#xff0c;系统就无法进行通信了&#xff1b; 这也是k8s在企业当中经常遇到的证书…

tcpdump 常用用法

简要记录下tcpdump用法 监控某个ip上的某个端口的流量 tcpdump -i enp0s25 tcp port 5432 -nn -S 各个参数作用 -i enp0s25 指定抓包的网卡是enp0s25 -nn 显示ip地址和数字端口 &#xff0c;如果只 -n 则显示ip&#xff0c;但是端口为services文件中的服务名 如果一个…

Orange3数据预处理(唯一组件)

唯一 删除重复的数据实例。 输入 数据&#xff1a;数据表格 输出 数据&#xff1a;无重复的数据表格 该组件删除重复的数据实例。用户可以选择一部分观察变量&#xff0c;因此&#xff0c;即使它们在其他人忽视的其他变量值上有所不同&#xff0c;两个实例也会被…

图片卷子怎么转换成word文档?3种方法轻松转换

图片卷子怎么转换成word文档&#xff1f;在日常学习中&#xff0c;将图片卷子转换成Word文档可以极大地方便学生们的学习和复习。首先&#xff0c;转换成Word文档后&#xff0c;学生们可以轻松地编辑、复制和粘贴其中的内容&#xff0c;从而快速整理学习笔记或制作复习资料。其…

C++内存对齐原则(struct长度大小)

一、什么是内存对齐原则 内存对齐原则指的是&#xff0c;保证各个存储空间的对齐。其目的是为了方便操作系统更加快捷的访问各个存储空间&#xff0c;也就是保证每次访问的偏移量都尽可能规律。 二、结构体strcut的内存对齐原则 对于C语言的struct而言&#xff0c;如果想计算s…