vue3 vite ts day2

虚拟dom diff 算法的了解

diff 算法  源码的了解

简单易懂的图

参考文章   

学习Vue3 第五章(Vue核心虚拟Dom和 diff 算法)_学习vue3 第五章 (vue核心虚拟dom-CSDN博客

如需了解更多请去原作者下看,讲的真的很细。

ref reactive 

vue2 是通过 export default data里面 return 的数据才是响应式数据是可以通过改变数据来实时反映到页面上的,而 vue3 的 ref  和  reactive 定义的数据才是响应式数据。

ref 全家桶

源码展示利于理解

<template>

<div @click="nameChange">
  {{ name }}
</div>


<!-- 点击实时改变 -->
<div @click="refnameChange">
  {{ refname }}
</div>


<div @click="funshallowRefname">
  {{ shallowRefname }}
</div>


<div ref="divdome" @click="getdome">
  我是div
</div>


</template>
<script setup lang="ts">
import { ref, isRef, shallowRef, triggerRef, customRef } from "vue";



//ref 可以用来获取dome 对象  常用
const divdome = ref<HTMLDivElement>()  //ts 
function getdome() {  
  //可以通过 dome 对象value 里面的方法 获取对象的信息
  console.log(divdome,'dome元素');
  console.log(divdome.value?.clientHeight,'dome元素的高度');  //24   有的元素值可能读不到 ?.连续操作链,不会报错
}


//customRef 自定义ref  具体可以自行搜索



// isRef 判断是否是ref
 //false
// console.log(isRef(name));
//true
// console.log(isRef(refname));






//shallowRef   //浅层的响应  不能和 ref 写一块,值会被影响到

// triggerRef   会强行更新识图 

const shallowRefname =shallowRef({
  n:'变3'
}) 

function funshallowRefname() { 
  shallowRefname.value.n = '改变3'  //不会改变识图

  triggerRef(shallowRefname) //会强行更新识图 


  // shallowRefname.value = {  //会改变识图  本应不因该更新识图的,更新了
  //     n:'改变3'
  // } 

  console.log(shallowRefname);  //打印的数据已经改变了
  //shallowRef  
}



const name = {
  n:'变'
}

function nameChange() { 
  name.n = '改变'
  console.log(name);
  //输出结果是 {value: '改变'} 但是页面没有更新
}




const refname =ref({
  n:'变2'
}) 


function refnameChange() { 
  refname.value.n = '改变2'
  console.log(refname);
  //通过ref包括后数据变成响应式进行相应的修改会实时响应到页面上,必须通过 .value  才可以改变值
}







</script>
<style>

</style>

效果图

知识拓展

?. 连选链操作  

?. 可选链操作符
?. 是可选链操作符,常用于访问引用类型具有不确定性的内部数据时,比如要访问一个对象中的数组,不确定数组一定有数据就可以使用 ? 取读取它的 length 属性,如果对象没有这个属性也仅会返回 undefined 而不会报错,这样可以有效规避“undefuned上没有 length 属性”的报错!

代码示例:

let data = {name: 'zs'}
console.log(data.list.length)        // 代码会报错!!!!
 
let data = {name: 'zs'}
console.log(data.list?.length)       // 返回 undefined 而不会报错

?? 和 ||
?? 和 || 运算符都可以用于设置“默认值/备用值”的情况,但二者具有些微差别:

?? 运算符仅有在左侧数据为 undefined 或 null 时才会取右侧的值,所以左侧数据为 0 / false 时不会取右侧数据,仍旧取左侧的 0 / false

代码示例:

let a = null
console.log(a ?? '空')        // 空
 
let a = undefined
console.log(a ?? '空')        // 空
 
let a = 0
console.log(a ?? '空')        // 0
 
let a = false
console.log(a ?? '空')        // false

|| 运算符只要左侧数据不为真就会取右侧的数据,所以左侧数据为 0 / false 时也会取右侧数据

代码示例:

let a = 0
console.log(false || '空')        // 空
 
let a = false
console.log(false || '空')        // 空
 
let a = null
console.log(false || '空')        // 空
 
let a = undefined
console.log(false || '空')        // 空

参考文章

? 可选链操作符以及 ?? 与 || 的区别_es6中??与|| 的区别-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动态计算加载图片

学习啦 别名路径&#xff1a;①npm install path --save-dev②配置 // vite.config,js import { defineConfig } from vite import vue from vitejs/plugin-vueimport { viteStaticCopy } from vite-plugin-static-copy import path from path export default defineConfig({re…

Postgresql 格式转换笔记整理

1、数据类型有哪些 1.1 数值类型 DECIMAL/NUMERIC 使用方法 DECIMAL是PostgreSQL中的一种数值数据类型&#xff0c;用于存储固定精度和小数位数的数值。DECIMAL的精度是由用户指定的&#xff0c;可以存储任何位数的数值&#xff0c;而小数位数则由用户自行定义。DECIMAL类型的…

爬虫运行后数据如何存储?

爬虫运行后获取的数据可以存储在多种不同的存储系统中&#xff0c;具体选择取决于数据的规模、查询需求以及应用场景。以下是一些常见的数据存储方法&#xff1a; 1. 文件系统 对于小型项目或临时数据存储&#xff0c;可以直接将数据保存到本地文件中。常见的文件格式包括&…

吉林大学23级数据结构上机实验(第7周)

A 去火车站 寒假到了&#xff0c;小明准备坐火车回老家&#xff0c;现在他从学校出发去火车站&#xff0c;CC市去火车站有两种方式&#xff1a;轻轨和公交车。小明为了省钱&#xff0c;准备主要以乘坐公交为主。CC市还有一项优惠政策&#xff0c;持学生证可以免费乘坐一站轻轨&…

谈谈IPD在PLM的落地

关注作者 1 前言 全球化市场竞争形势下&#xff0c;越来越多企业不断提升自身的研发创新能力&#xff0c;加大产品的研发创新投入。从整个研发投入来看&#xff0c;2022年至2023年间&#xff0c;研发投入强度由1.54%提升至2.64%&#xff0c;其中中小民营企业增长为3.75%&#…

线程(二)——线程安全

如何理解线程安全&#xff1a; 多线程并发执行的时候&#xff0c;有时候会触发一些“bug”&#xff0c;虽然代码能够执行&#xff0c;线程也在工作&#xff0c;但是过程和结果都不符合我们的开发时的预期&#xff0c;所以我们将此类线程称之为“线程安全问题”。 例如&#xff…

思特奇政·企数智化产品服务平台正式发布,助力运营商政企数智能力跃迁

数字浪潮下,产业数字化进程加速发展,信息服务迎来更广阔的天地,同时也为运营商政企支撑系统提出了更高要求。12月4日,2024数字科技生态大会期间,思特奇正式发布政企数智化产品服务平台,融合应用大数据、AI等新质生产要素,构建集平台服务、精准营销、全周期运营支撑、智慧大脑于…

解决Windows与Ubuntu云服务器无法通过Socket(udp)通信问题

今天在写Socket通信代码的时候&#xff0c;使用云服务器自己与自己通信没有问题&#xff0c;但是当我们把客户端换为Windows系统的时候却无法发送信息到Linux当中&#xff0c;耗时一上午终于搞定了&#x1f612;。 问题&#xff1a; 如上图&#xff0c;当我在windows的客户端…

面向金融场景的大模型 RAG 检索增强解决方案

概述 在现代信息检索领域&#xff0c;检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;模型结合了信息检索与生成式人工智能的优点&#xff0c;从而在特定场景下提供更为精准和相关的答案。在特定场景下&#xff0c;例如金融等领域&#xff0c;用户通…

【pyspark学习从入门到精通24】机器学习库_7

目录 聚类 在出生数据集中寻找簇 主题挖掘 回归 聚类 聚类是机器学习中另一个重要的部分&#xff1a;在现实世界中&#xff0c;我们并不总是有目标特征的奢侈条件&#xff0c;因此我们需要回归到无监督学习的范式&#xff0c;在那里我们尝试在数据中发现模式。 在出生数据…

渗透测试---burpsuite(5)web网页端抓包与APP渗透测试

声明&#xff1a;学习素材来自b站up【泷羽Sec】&#xff0c;侵删&#xff0c;若阅读过程中有相关方面的不足&#xff0c;还请指正&#xff0c;本文只做相关技术分享,切莫从事违法等相关行为&#xff0c;本人与泷羽sec团队一律不承担一切后果 视频地址&#xff1a;泷羽---bp&…

[LitCTF 2023]破损的图片(初级)

[LitCTF 2023]破损的图片(初级) 我们下载附件得到一个没有后缀的文件&#xff0c;拖去010看一看&#xff0c;发现本来应该是文件头的那部分不大对劲&#xff0c;结合后面四个点以及IHDR&#xff0c;大致也应该知道是啥了 修改第一行为png 89 50 4E 47 0D 0A 1A 0A 00 00 00 …

docker部署RustDesk自建服务器

客户端&#xff1a; Releases rustdesk/rustdesk GitHub 服务端&#xff1a; 项目官方地址&#xff1a;GitHub - rustdesk/rustdesk-server: RustDesk Server Program 1、拉取RustDesk库 docker pull rustdesk/rustdesk-server:latest 阿里云库&#xff1a; docker pu…

智慧银行反欺诈大数据管控平台方案(八)

智慧银行反欺诈大数据管控平台的核心理念&#xff0c;在于通过整合先进的大数据技术、算法模型和人工智能技术&#xff0c;构建一个全面、智能、动态的反欺诈管理框架&#xff0c;以实现对金融交易的全方位监控、欺诈行为的精准识别和高效处理。这一理念强调数据驱动决策&#…

关闭windows11的“热门搜索”

win10搜索栏热门搜索怎么关闭&#xff1f;win10搜索栏热门搜索关闭方法分享_搜索_onecdll-GitCode 开源社区 注册表地址是&#xff1a;计算机\HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\ 最后效果如下&#xff1a;

14.在 Vue 3 中使用 OpenLayers 自定义地图版权信息

在 WebGIS 开发中&#xff0c;默认的地图服务通常会带有版权信息&#xff0c;但有时候我们需要根据项目需求自定义版权信息或添加额外的版权声明。在本文中&#xff0c;我们将基于 Vue 3 的 Composition API 和 OpenLayers&#xff0c;完成自定义地图版权信息的实现。 最终效果…

Dubbo应用篇

文章目录 一、Dubbo简介二、SSM项目整合Dubbo1.生产者方配置2.消费者方配置 三、Spring Boot 项目整合Dubbo1.生产者方配置2.消费者方配置 四、应用案例五、Dubbo配置的优先级别1. 方法级配置&#xff08;Highest Priority&#xff09;2. 接口级配置3. 消费者/提供者级配置4. 全…

数据结构与算法 五大算法

文章目录 1&#xff0c;时间复杂度与空间复杂度 2&#xff0c;插入排序 3&#xff0c;希尔排序 4&#xff0c;选择排序 1&#xff0c;单趟排序 2&#xff0c;选择排序PLUS版本 5&#xff0c;冒泡排序 6&#xff0c;快速排序 1&#xff0c;hoare版本 2&#xff0c;挖坑法 前言 …

子类有多个父类的情况下Super不支持指定父类来调用方法

1、Super使用方法 super()函数在Python中用于调用父类的方法。它返回一个代理对象&#xff0c;可以通过该对象调用父类的方法。 要使用super()方法&#xff0c;需要在子类的方法中调用super()&#xff0c;并指定子类本身以及方法的名称。这样就可以在子类中调用父类的方法。 …

Java项目实战II基于微信小程序的消防隐患在线举报系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着城市化进程的加快&…