Vue3 完结

组合式API - setup选项

组合式API可理解为一系列函数,通常需要调用这些函数去编写将来的组件逻辑;

而setup为组合式API的入口(只有先写了setup才能往里写组合式API的函数)

setup选项的写法及执行时机

执行时机在beforeCreate之前

效果展示:

this问题

创建实例之前去执行的,setup函数中获取不到this,this是undefined

setup选项中写代码的特点

setup函数中提供的所有数据/函数,如果想要在模板中应用,必须return

问题:每次都return太麻烦

使用<script setup>语法糖简化代码


组合式API - reactive和ref函数

问题:在vue中默认数据并非是响应式的;

如果我们希望数据是响应式的;需要借助reactive或者ref函数进行处理

reactive()

作用:接收对象类型的数据作为参数传入,并返回一个响应式的对象

步骤:

  • 从vue包中导入reactive函数

import {reactive} from 'vue'

  • 在<script setup>中执行reactive函数,并传入类型为对象的初始值,并使用变量接收返回值

ref()

作用:接收简单类型或对象类型的数据传入,并返回一个响应式的对象

步骤:

  • 从vue包中导入ref函数

import {ref} from 'vue'

  • 在<script setup>中执行ref函数并传入初始值,使用变量接收ref函数的返回值

得到一对象,对象里有一个value属性,属性值为0;所以访问数据的时候,需要通过.value

注意点:在script中访问数据需要通过.value;template中不需要加.value(帮我们扒了一层)

其本质是:在原有传入数据的基础上,外层包了一层对象,再借助reactive实现的响应式

效果展示:

升级 —— +1操作


组合式API - computed

computed计算属性函数

步骤:

  • 导入computed函数

import { computed } from 'vue'

  • 执行函数,用变量去接收;computed函数的回调参数为 计算属性的计算逻辑

const 计算属性 = computed( () => {

        return 基于响应式数据做计算之后的值

})

案例

需求:基于[1,2,3,4,5,6,7,8] 筛选出所有数字大于2的 得到 [3,4,5,6,7,8]

filter函数

效果展示:

扩展 —— 实现对数组的修改

效果展示:


组合式API - watch

watch函数

作用:侦听一个或多个数据的变化,数据变化时执行回调函数

侦听单个数据

步骤:

  • 导入watch函数

import {watch} from 'vue'

  • 调用watch函数;传入要侦听的响应式数据(ref对象)和 回调函数

watch(ref对象,(newValue,oldValue) => {...})

newValue:变化后的 ;oldValue:变化前的

一旦这个ref对象变化了,就执行后面的回调函数

效果展示:

侦听多个数据

写成数组形式

watch([ref对象1,ref对象2],(newArr,oldArr) => {...})

一旦数组里任意一个发生了变化,都会触发后面的回调函数

效果展示:

配置项 —— immediate

立刻执行(一进页面就执行一次)—— 侦听器创建时就立即触发回调;

响应式数据变化之后,继续执行回调

步骤:

将 {immediate: true} 写在watch函数的第三个参数的位置

效果展示:

配置项 —— deep

深度监视

为什么要有deep:true,watch不是已经监视了吗

默认watch进行的是浅层监视, const 数据ref = ref(简单类型) 可以直接监视

但如果传的是复杂类型,就监视不到复杂类型内部数据的变化

这么写,拿不到;只有userInfo.value对象的地址变化了,才可以监视的到

像这样

效果展示:

 想要userInfo.value对象的age++也能监视的到,就需要采用深度监视

效果展示:

精确侦听对象的某个属性

需求:只想侦听对象中的某一个属性的变化,而不需要侦听整个对象里面所有属性的变化

即只有某个特定属性变化时,才执行回调

就是说 name改李四,也会触发侦听;因为是深度触发

改age才触发


组合式API - 生命周期函数

区别于Vue2:销毁阶段的beforeDestory和destoryed 换成了beforeUnmount和unmounted

规则

选项式API,里面写在beforeCreate/created里面的代码,到了组合式API要写在setup里面

eg. created里面发的请求(到了created这个钩子,响应数据已经准备好了)

其余的,on开头

演示


组合式API - 父子通信

组合式API下的父传子

步骤:

  • 父组件中给子组件绑定属性
  • 子组件内部通过props选项接收

这里注意:有了setup之后,我们通过defineProps"编译宏" 接收子组件传递的数据

目标:父组件里面的数据将来要传递给子,并且在子里做渲染

Case1. 传的是写死的值

Case2. 传一个动态的值(响应式的数据)

效果展示:

响应式 

老爹数据变化,儿子实时更新

效果展示:

组合式API下的子传父

步骤:

  • 父组件中给子组件标签通过@绑定自定义事件,进行侦听

v-on:事件名 = "内联语句"

添加监听   +    提供处理逻辑

  • 通过defineEmits"编译宏" 生成emit方法

defineEmits(['自定义事件名'])

emit要触发的事件,需要在上面的编译器宏中去声明

  • 子组件内部通过emit方法触发事件

emit('自定义事件名',参数)

效果展示:


组合式API - 模板引用

通过ref标识去获取页面中真实的dom对象或组件实例对象;进而调到dom/组件里的属性或方法

语法:

  • 调用ref函数,生成一个ref对象
  • 通过ref标识,进行绑定
  • 通过ref对象.value即可访问到绑定的元素(必须是渲染完之后才能拿得到;onMounted这个钩子处,模板就已经渲染好了)

案例:

获取dom

一进页面就聚焦

点击按钮聚焦

获取组件的属性/方法

注意:

vue3中,默认情况下在<script setup>语法糖下组件内部的属性和方法是不对外开放的;

如果想要在外部访问到,就需要通过defineExpose编译宏指定哪些属性和方法允许访问

效果展示:


组合式API - provide和inject

作用:顶层组件向任意的底层组件传递数据和方法,实现跨层组件通信

规则:

顶层组件通过provide函数提供数据

底层组件通过inject函数获取数据

分情况讨论:

Case1. 跨层传递普通数据

顶层组件:provide('key','value')

底层组件:const message = inject('key')

效果展示:

Case2. 跨层传递响应式数据

顶层组件:provide('key',ref对象)

底层组件:const message = inject('key')

效果展示:

Case3. 跨层传递函数

使用场景:底层想修改顶层的数据,但我们遵循的是谁的数据谁来维护;这时可以让顶层给子孙后代传递 可以修改数据的方法

效果展示:


vue3.3以上版本新特性 - defineOptions

问题:使用了<script setup> 语法糖,无法提供一些和setup平级的属性

—— Vue3.3以上版本引入 defineOptions 宏 ,可用来定义任意选项;

props、emits、expose除外,这些有专门对应的defineProps、defineEmits、defineExpose

在此之前,如果我们要定义组件的name或其他自定义属性,都是再添加一个普通的<script>标签,这样就会存在两个<script>标签

defineOptions 宏函数


vue3.3以上版本新特性 - defineModel

Vue3中的 v-model 相当于:modelValue(v-bind:属性名)和 @update:modelValue(v-on:事件名)

即传递一个modelValue属性,同时触发update:modelValue事件

案例:

实现父子组件的双向数据绑定

新版本改进

加配置

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

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

相关文章

简洁的移动端登录注册界面

非常简洁的登录、注册界面模板&#xff0c;使用uni-app编写&#xff0c;直接复制粘贴即可&#xff0c;无任何引用&#xff0c;全部公开。 废话不多说&#xff0c;代码如下&#xff1a; login.vue文件 <template><view class"content"><view class&quo…

2024NIPS | 在目标引导下利用强化学习范式进行图像冲印调优

文章标题&#xff1a;Goal Conditioned Reinforcement Learning for Photo Finishing Tuning 原文链接&#xff1a;RLPixTuner 本文是上海AI Lab联合香港中文大学&#xff08;薛天帆等人&#xff09;发表在2024NIPS上的论文。 1. Abstract 图像冲印调优旨在自动化对图像冲印管…

【Spring】Cookie与Session

一、Cookie是什么&#xff1f; Cookie的存在主要是为了解决HTTP协议的无状态性问题&#xff0c;即协议本身无法记住用户之前的操作。 “状态” 的含义指的是: 默认情况下 HTTP 协议的客端和服务器之间的这次通信&#xff0c;和下次通信之间没有直接的联系 但是实际开发中&…

【最新】linux安装docker并配置加速源

我这边之前本地创建了个虚拟机&#xff0c;linux系统的&#xff0c;用于部署服务器。有时安装一些常用工具或者中间件&#xff0c;还是用docker安装方便&#xff0c;而且docker还有编排服务等功能&#xff0c;实际使用中还是会省不少事的&#xff0c;这里记录下安装docker的过程…

SpringBoot动态配置Nacos

重要知识点 Nacos属性的简单使用将SpringBoot中的所有配置全部放入到Nacos中开发人创建单独的命名空间,修改互不影响Nacos经常变动的配置抽离到外部文件中 将项目中的所有配置全部放到到 1. 首先引入包 <!-- nacos 接入--><!-- https://mvnrepository.com/artifact…

【每天一篇深度学习论文】轻量化自适应提取模块LAE

目录 论文介绍题目&#xff1a;论文地址&#xff1a; 创新点方法模型总体架构核心模块描述1. 轻量级自适应提取&#xff08;LAE&#xff09;模块&#xff1a;2. 多路径旁路特征匹配&#xff08;MSFM&#xff09;模块&#xff1a;3. RFABlock&#xff08;感受野注意力卷积&#…

Linux中文件操作

文件由文件内容和文件属性构成&#xff0c;因此对文件的操作就是对文件内容或文件属性的操作。所谓的“打开一个文件”就是将文件的属性或内容加载到内存中&#xff0c;而没有被打开的文件存在于磁盘上。打开的文件称作“内存文件”&#xff0c;未被打开的文件称作“磁盘文件”…

hhdb数据库介绍(10-42)

安全 SQL防火墙 管理平台提供的SQL防火墙功能可为用户拦截高危SQL、误操作SQL等&#xff0c;提升系统安全性。 同时防火墙提供观测功能&#xff0c;可在开启新规则前&#xff0c;通过开启观测状态&#xff0c;判断新规则对业务的影响程度。开启观测状态后&#xff0c;计算节…

白嫖VMware ESXi 8.0 U3新功能Live Patch、无需重启零中断修复漏洞

哈喽大家好&#xff0c;欢迎来到虚拟化时代君&#xff08;XNHCYL&#xff09;&#xff0c;收不到通知请将我点击星标&#xff01;“ 大家好&#xff0c;我是虚拟化时代君&#xff0c;一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…

JavaSE学习心得(API与算法篇)

常用API和常见算法 前言 常用API Math System Runtime Object ​编辑浅克隆 深克隆 Objects Biginteger 构造方法 成员方法 底层存储方式 Bigdecimal 构造方法 Bigdecimal的使用 底层存储方式 ​编辑正则表达式 两个判断练习 两个爬取练习 贪婪爬取和非贪…

如何开发高效的企业内训APP?教育培训系统源码搭建实战详解

本篇文章&#xff0c;小编将从教育培训系统的源码搭建、功能设计以及技术实现等方面&#xff0c;详细探讨如何开发一款高效的企业内训APP。 一、企业内训APP的需求分析 在开发企业内训APP之前&#xff0c;首先需要明确其基本需求。一个高效的企业内训APP应该具备以下几个核心…

解释器模式的理解和实践

引言 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;它在软件工程中用得相对较少&#xff0c;但在某些特定场景下非常有用。解释器模式提供了一种解释语言的语法或表达式的方式&#xff0c;它定义了一个表达式接口&#xff0c;并通过…

Z029 PHP+MYSQL+LW+饭店预订管理系统的设计与实现 源代码 配置 文档

饭店预订管理系统 1.项目描述2. 开发背景与意义3.项目功能结构4.界面展示5.源码获取 1.项目描述 近几年来&#xff0c;我国计算机信息技术发展迅速&#xff0c;各种各样的信息管理系统层出不穷。互联网电子商务的热潮&#xff0c;改变了人们生活习惯&#xff0c;而作为城市经济…

【力扣热题100】—— Day5.回文链表

正视自己的懦弱和无能&#xff0c;克服自己的嫉妒与不甘 —— 24.12.3 234. 回文链表 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为 回文链表 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a…

什么是大数据、有什么用以及学习内容

目录 1.什么是大数据&#xff1f; 1.1大数据的类型 1.2大数据的来源 1.3大数据处理的挑战 1.4大数据的核心技术 2.大数据有什么用&#xff1f; 2.1商业与营销&#xff1a; 2.2医疗与健康&#xff1a; 2.3金融服务&#xff1a; 2.4政府与公共服务&#xff1a; 2.5交通…

Docker 安装 中文版 GitLab

Docker 安装系列 安装GitLab、解决服务器内存不足问题、使用域名/IP地址访问项目 1、拉取 [rootTseng ~]# docker pull twang2218/gitlab-ce-zh:latest latest: Pulling from twang2218/gitlab-ce-zh 8ee29e426c26: Pull complete 6e83b260b73b: Pull complete e26b65fd11…

分布式数据库环境(HBase分布式数据库)的搭建与配置

分布式数据库环境&#xff08;HBase分布式数据库&#xff09;的搭建与配置 1. VMWare安装CentOS7.9.20091.1 下载 CentOS7.9.2009 映像文件1.2启动 VMware WorkstationPro&#xff0c;点击“创建新的虚拟机”1.3在新建虚拟机向导界面选择“典型&#xff08;推荐&#xff09;”1…

ssh连接工具

我们未来接触到的linux系统一般情况下是没有界面&#xff08;桌面环境&#xff09;&#xff0c;我们一般会在自己工作的电脑上&#xff0c;通过相关ssh工具&#xff0c;利用网络连接到远程的你的服务器上。连接工具有很多&#xff1a;mobaxterm、xshell/xftp、putty等等 mobaxt…

苹果 ATS 配置SSL证书

Apple的App Transport Security (ATS) 是一项安全机制&#xff0c;旨在确保iOS和macOS应用的网络通信使用HTTPS加密。自iOS 9和OS X 10.11以来&#xff0c;默认情况下所有网络请求都必须使用HTTPS&#xff0c;除非明确允许非HTTPS连接。 在2017年1月1日之前&#xff0c;开发者可…

安卓逆向之对抗Anti-Frida学习

基础补充 什么是 Anti-Frida 保护&#xff1f; Anti-Frida保护是指在移动应用或程序中采用的一种安全技术或防护机制&#xff0c;旨在防止或干扰Frida等动态分析工具的注入与使用。 Anti-Frida保护常见技术 有哪些&#xff1f; 检测frida-agent.so的注入 &#xff1a; Fr…