VUE3的有关知识

学习vue3的原因

在vue2当中的组件的实例,都是data一块,computed一块,当我们去找某一变量相关的则十分麻烦,vue3是组合式API,vue2是选项式,

vue3的优点:

        1)组合式更易维护

        2)更快的速度

        3)更小的体积

        4)更好的响应式proxy

使用vue3相关脚手架创建项目

步骤:

1)node -v node版本需至少16.0

2)npm init vue@latest 会创建vue3项目

vue3的组合式

生成的脚手架是npm run dev 执行

如果是vue2,当中,new Vue生成的实例,对于组件是都可以使用的,在创建的实例内,但是vue3的createApp,这个函数,和new Vue一样,会创建实例,且参数是可用和new Vue 一样的,和new Vue效果一样,都是创建实例,只不过这个函数可实例,可用component创建局部组件,只在这个实例内全局使用.只能在vue3使用,底层是vite.

这里createApp(根组件,传给根组件的prop对象)

setup选项

vue3当中有setup周期函数,在beforeCreate前执行.vue3特有的.

会调用这个函数,将返回值赋给创建的vue实例,当beforecrate之后.因此setup函数内只需要写变量,返回变量即可,且即使是函数methods类比也只需要变量,最后都是作为vue实例的响应式.但是对于创建时对于computed等选项式有响应式函数,但是对于setup的变量,赋的时候没有响应式,直接赋.setup在组件还没创建出之前,就调用,把返回值存.setup之后开始创建实例.

vue3特有的setup关键字

在script标签上写setup关键字,会对标签内类似于setup函数内的,对内只要是变量就返回,赋给实例.

是写了setup内变量都赋给实例.在实例没有创建前,可再写script,export是创建实例.

setup函数内写的都是响应式数据自定义变量.,无法name这种获取信息的变量.

我们如果要写name,需要再写script上写.

setup内没有this.函数调用可没有this.使其this指向null.setup可以代替data,computed,methods等.

用语法糖无需写data等,直接写script setup可以生成响应式的数据实例.

ref和reactive函数响应式

疑问一:为什么开发者不给vue3设置响应式

因为内部还有计算属性不能给所有的都只是响应式.

setup返回的直接赋给,因此如果不含响应式则不会使得渲染模板,重新.

那个变则渲染那些模板.

1)如果不是对象

则从vue导入ref函数,ref(非对象数据)可用生成一个对象,是响应式的,对象的value是该值

2)如果是对象

ref(对象)/reactive(对象)使得响应式.

reactive内部将对象传给proxy的参数,第二个参数写了增删改查的操作,这样会生成proxy响应式对象,proxy的属性和传入对象属性一致,给这些属性做了响应式,当proxy内的这些属性被操作时,会进行get,set等方法,且会有响应式.因此如果对象内的是对象则只会是浅响应.

ref函数内部是是将如果是参数,构造成一个对象,对象的value属性是ref的参数,无论是否是对象.,将对象赋给proxy的value属性,进行响应式.因此value属性的改变可响应式.proxy的第一层改变有响应式.

ref的值,在模板上不用写value,因为会补,但是js是需要的.

setup当中的计算属性

内部将get的返回值作为ref函数的参数,返回一个ref对象,且给她Object.方法,使得访问ref对象的value或修改是访问.因此计算属性内部是ref对象,可以响应式.当修改会执行set方法.当对应的数据改变,也会重新调用get方法,赋给ref对象的value.这种修改不去访问set.

计算属性访问也是value,ref对象内都是value.reactive响应式也只是第一层,ref生成的prox也只是第一层.

setup当中的watch

setup内些变量即可放到实例对象内,无论什么作用,因此可以是响应式数据,也可以是计算属性.

选项式内部watch也只是当数据变化时,执行内部的函数.

从vue内导入watch函数,函数内部写参数,第一个参数是需要监督的变量,第二个是函数,内部会生成对这个变量的监督,这个变量如数组,会存储这个变量的值.只是watch函数,形成了一个监督在内存内.

没有赋值到实例上.监督的都是对象,第三个参数是对ref对象监督的一些要求,比如立刻先执行,或者深监督.深层监督会监督所有.

监听ref对象,传参会将值传给她,值是地址.如果将ref对象内的对象属性传给她,也是地址.会对这地址内的属性进行监听,是对传入对象第一层数据监听.如果是数据,不是对象,则需要写成函数,对函数返回值进行监听.因此函数属性监听用箭头函数.

1)监听ref对象,监听ref的value值

2)监听数组,监听每一个元素的value值

3)深层监听deep,value的每一层

4)reactive监听第一层

5)当监听给的是一个地址,则监听该地址内的每一个数据,传递的只是一个数值,需要些函数,箭头函数,但是监听对象属性,即使是对象,也可也写函数,监听返回值对象的第一层.

生命周期钩子函数

vue3的钩子函数在setup函数用的.这些钩子函数需要vue导入,可以使得执行的时候在对应时间执行钩子函数的参数.vue3的这些钩子函数,需要自己导入执行,能在对应时间,无论多少个,无论在哪执行钩子函数.其他的是选项式钩子函数.这些vue3的钩子函数,在setup内写.vue3仍保存vue2的选项式,只是增加了这些.我们因此只用setup和放入setuo内的函数.

组合式父子通信

 vue3当中子组件,只需要导入,导入就会将这个组件创建vue实例时.保存这个模板.

父传子

vue2--->props

vue3-->写属性写到子组件上去,在子组件内的setup,在vue2上写props,则会去组件实例找,但是vue3没有选项式,需要自己将这个值取出来,赋值.

defineProps函数会取得,返回值是一个对象,对象内是参数传递的key,会找到传递的属性值,形成对象,返回.对象的值,如果是对象,则指向同一个父组件的地址,如果不是对象,也是指向静态变量,同一个地址.当父组件修改,子组件访问的也会修改,会触发响应式.

我们通过这个函数,返回了变量props,内有传递的数据.不能解构,因为解构会将数据取出,无论是否对象,只是一个值,则是重新书写一个变量内存,与父组件无关了.当父组件变,这个也不会变.之后执行,也不是父传递的数据,不能随着而变.

子传父

vue2 是给子组件绑定事件,而子组件触发传递数据

vue3给子组件绑定事件,,但是setup内没有this,无法this.$emit触发组件的事件.

defineEmits返回的值是一个函数,但是这个函数是所一个触发器,函数可以触发.

返回的函数可以1根据传递的参数,进行触发.

Ref获取节点

ref,可以写到标签上,原本是实例上有$ref,但是现在访问不到实例,

ref函数创建响应式对象,但是如果是null,一开始是null,但是当DOM执行完,则这个对象的value变成变量名与ref属性值相同的标签.这个变量当实例生成会赋给实例,当渲染之后这个value是节点对象,重新渲染.以及可以执行这个变量的value.

defineExpose宏函数

setup的属性是默认关闭的,但是defineExpose函数,内部写对象,key和value值,可以放开属性的值.

当获取子组件,获取到实例的方法属性.

emit触发事件,$event第一个函数的参数.

祖先组件和子代组件的数据传输

vue2是选项式,父组件的provide选项,会使得内部的变量提供.在子组件当中写数组,可以和props,实例有这个变量.

vue3当中,没有选项式,和vue2一样,会执行provide函数使其能被所有子组件访问.只不过vue2写选项,自动,而这里需要提供provide函数,函数第一个参数key,第二个参数value.

在子组件,原本是选项,使得inject的会绑定到实例上.但现在没有,需要手动写,inject可以绑定.绑定的话,message绑定的是祖先组件的这个数据,当变化时,也会变化.响应到所有的地方.

defineOptions函数

之前的问题,setup上的属性都被当成自定义的属性,不会被当成选项式name属性去看.即使属性名相同.选项式内部对于name这种有其他操作.

这个函数,内写参数,对于对象内部的属性的操作会使得到创建实例时和写到实例的选项式一样.而且可以在setup内.

defineModel函数实现双向数据绑定

现在的v-model需要自己写:vlaue @input的事件.直接使用无需导入.

从类似与props的作用,并且可以直接修改props传递的值.

defineModel返回值是ref对象.ref对象的value是name这个计算属性,访问的话,都是modelvalue这个值,且props改变,也会随着改变.当修改value,不会直接修改,且不是props传递过来的指向的地址的变量,可以修改.触发事件.

Pinia

1)概念

pinia是vue的最新的状态管理工具(和store一样,提供公共数据的),是vuex的替代物.无论vue2/vue3都可以.

优点

2)使用pinia

仓库是所在任何一个组件都可以使用的.即使是路由组件.

vue3

1)绑定

需要导入createPinia导入函数,创建函数实例pinia.再给vue实例use(oinia对象)可以使得调用函数时,内部有这个pinia对象,因此需要给每一个组件都传递.使得可以使用这个对象.pinia内应该能解决vuex的事情.创建vuex的store.

2)定义store

不是写在new vue当中.写js导入.

定义放到js文件内,通过defineStore函数,导出这个返回值.返回值是一个函数.函数调用会返回一个对象,对象内是state内的数据,getters内的数据,getters,将数据为计算属性.actions内的将方法直接.

vue2

但是vue3她使用的应该是别的,因此是响应式.将

3)导出使用

在组件当中导入,导入的是一个函数,函数调用需要pinia返回对象.id是放在vue工具上的.返回的是函数,调用生成对象.但是当二次调用时,不会生成新的对象,是原本的.当修改action去修改.我们访问1是这个.当修改时,只有响应式的数据,才能重新模板渲染.只有ref的数据value.vue当中data,computed,methods都是响应式.但是actions不是响应式的.不能修改.

pinia比vuex先进,原本只能看到mutations立刻执行的时间点,现在可以看到时间之后的.因此直接放到actions内写.

storeToRefs函数

获取到对象,直接解构都是得到一个相同的值,不是原本的地址.

解构,则获得的是原来地址.原count地址,是响应式的.

actions可以直接解构,相同的方法,不能修改,直接去调用这个方法,这个方法内仍保存着原本数据的地址.

持久化

1)下载插件

2)插件放到实例上

3)函数,则是第三个参数,对象,就是key:value

持久化要通过插件内的实现.持久化是使得传出的数据当被更新则存到本地,当打开页面则赋这本地的值.不是所写的如count=ref(0)的值.

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

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

相关文章

【CVE-2010-2883】进行钓鱼攻击的研究

最近作业中研究APT攻击,了解到2011年前后披露的LURID-APT,其中敌手利用了各种版本的文件查看器的漏洞实现攻击。CVE-2010-2883就是其中被利用的一个adobe reader的漏洞。特此复现,更好的研究和防范APT攻击。 本文仅仅是对相关漏洞利用的学习…

PyCharm Pro 2024:卓越的Python编辑开发工具,适用于Mac与Windows平台

PyCharm Pro 2024是一款专为Python开发者设计的强大编辑开发工具,无论是Mac还是Windows用户,都能从中受益良多。该软件凭借其出色的性能、丰富的功能和卓越的用户体验,成为Python编程界的翘楚。 作为一款高效的Python编辑器,PyCh…

02-结构化程式与自定义函数

视频教程:b站视频【MATLAB教程_台大郭彦甫(14课)原视频补档】https://www.bilibili.com/video/BV1GJ41137UH/?share_sourcecopy_web&vd_sourc*ed6b9f96888e9c85118cb40c164875dfc 官网教程: MATLAB 快速入门 - MathWorks 中…

React 使用 three.js 加载 gltf 3D模型 | three.js 入门

系列文章 示例项目(gitcode):https://gitcode.com/qq_41456316/simple-react-three-demo 文章目录 系列文章前言一、three.js是什么?二、使用 React 和 three.js 加载 glTF 3D 模型的步骤步骤 1:创建 React 应用步骤 2:安装 thre…

使用QT 开发不规则窗体

使用QT 开发不规则窗体 不规则窗体贴图法的不规则窗体创建UI模板创建一个父类创建业务窗体main函数直接调用user_dialog创建QSS文件 完整的QT工程 不规则窗体 QT中开发不规则窗体有两种方法:(1)第一种方法,使用QWidget::setMask函…

川土微高性能模拟芯片系列产品介绍和应用

一、公司简介 上海川土微电子有限公司是一家成立于2016年的专注于高端模拟芯片研发设计与销售的高科技公司,产品涵盖隔离与接口、驱动与电源、高性能模拟三大产品线以及μMiC战略产品( micro-Module in Chip)。目前产品已广泛应用于工业控制…

怎么在SU草图大师里做地形模型?

​​​​​​  1.导入地形数据:首先,找到你想要模拟的地形数据。常见的文件格式是DEM(数字高程模型)文件,它包含地表高程数据。在SketchUp中,通过菜单栏选择“文件” -> “导入” -> “DEM”,然后选择你的DEM文…

基于springboot实现桂林旅游景点导游平台管理系统【项目源码+论文说明】

基于springboot实现桂林旅游景点导游平台管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了桂林旅游景点导游平台的开发全过程。通过分析桂林旅游景点导游平台管理的不足,创建了一个计算…

【数据结构(四)】链表经典练习题

❣博主主页: 33的博客❣ ▶️文章专栏分类:数据结构◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你学更多数据结构知识 目录 1.前言2.删除值为key的所有结点3.反转链表4.返回中间结点5.输出倒数第k个结点6.链表…

2024-04-10 Linux gzip 和 gunzip 命令,gzip 压缩的文件通常比原始文件小得多。

一、gzip 是 Linux 系统中用于压缩文件的命令,它通常用于将单个文件压缩成 .gz 格式的文件。gzip 压缩的文件通常比原始文件小得多,因此它在节省磁盘空间和减少文件传输时间方面非常有用。 gzip 命令的基本语法如下: gzip [选项] [文件]复制…

VMware vSphere Hypervisor,ESXi的介绍,下载与安装

1.介绍 看这篇文章就好了 Vmware ESXi 是免费吗?一文弄懂vSphere功能特性及ESXi与vSphere到底有什么区别和联系。 - 知乎 (zhihu.com) 2.下载 这里面有7.0各个版本的下载镜像文件和校验信息 VMware-Esxi7.0各个版本镜像文件iso下载链接_esxi7.0镜像-CSDN博客 3.…

团结引擎+OpenHarmony 2 xlua编译篇

文章目录 前言一、下载 xlua 源码二、OpenHarmony SDK三、开干 前言 提示:我们的 app 鸿蒙化过程 需要用到 xlua ,目前没有适配 OpenHarmony 平台,所以需要重新编译一下。编译有多种方式,但是我只会这一种 就是使用 cmake。 一、下载 xlua 源…

花一分钟简单认识 CSS 中的规则 —— 级联层 @layer

layer 简介: 声明级联层时,越靠后优先级越高。不属于任何级联层的样式,将自成一层匿名级联层,并置于所有层之后 —— 级别最高。 用法一:在同一文件中 layer base, special; layer special {/* 优先 */li { color: …

2、Qt UI控件 -- qucsdk项目使用

前言:上一篇文章讲了qucsdk的环境部署,可以在QDesigner和Qt Creator中看到qucsdk控件,这一篇来讲下在项目中使用qucsdk库中的控件。 一、准备材料 要想使用第三方库,需要三个先决条件, 1、控件的头文件 2、动/静态链…

软考数据库---1.事务管理

目录 1.1 事物的基本概念1.2 数据库的并发控制1.2.1 事务调度概念1.2.2 并发操作带来的问题1.2.3 并发控制技术1.2.4 隔离级别: 1.3 数据库的备份和恢复1.3.1 故障种类1.3.2 备份方法1.3.3 日志文件1.3.4 恢复 1.1 事物的基本概念 ●概念:一个操作序列&…

AiChat是什么?

AIChat是一款功能强大的聚合AI大模型智能聊天助手,为用户提供自动化的客服和聊天机器人服务。无论是需要为企业提供更好的客户体验,还是为个人用户提供高效便捷的服务,AIChat都是最佳选择。本文将详细介绍AIChat的特点和优势。 Aichat简介&am…

学习R语言第二天

R语言可以做什么 1.数据分析 R语言如何使用 1. 请看我的操作方式 2. 如何获取当前路径 -- 获取当前路径 > getwd() [1] "E:/R/RWorkSpace/day01" -- 修改当前路径 > setwd(dir "E:/R") > getwd() [1] "E:/R" 3.查看当下数据值的信…

HCIP课后习题之一

1、路由协议用工作机制上分为那几种?分别是? A:两种。分别是静态路由和动态路由(可分为IGP和EGP) 2、IGP和EGP协议有哪些? A:IGP: RIP、OSPF、ISIS、EIGRP EGP: BGP 3、路由优先级的用途&…

机器人坐标系转换之从世界坐标系到局部坐标系

三角函数实现 下面是代码c和python实现&#xff1a; #include <iostream> #include <cmath>struct Point {double x;double y; };class RobotCoordinateTransform { private:Point origin; // 局部坐标系的原点在世界坐标系中的坐标public:RobotCoordinateTransfo…

zabbix企业级监控平台

zabbix部署 安装源 重新创建纯净环境&#xff0c;利用base克隆一台虚拟机server1 给server1做快照&#xff0c;方便下次实验恢复使用 进入zabbix官网https://www.zabbix.com rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm …