555、Vue 3 学习笔记 -【常用Composition API(四)】 2023.07.06

news2024/11/25 7:09:19

目录

    • 一、setup的两个注意点
      • 1. setup执行的时机
      • 2. setup的参数
    • 二、 计算属性与监视
      • 1. computed函数
      • 2. watch函数
      • 3. watchEffect函数
    • 三、参考链接

一、setup的两个注意点

1. setup执行的时机

在beforeCreate之前执行一次,this是undefined

2. setup的参数

  • props:值为对象,包含:组件外部传递过来,且组件内部声明接受了的属性。
  • context:上下文对象。
  • attrs:值为对象,包含:组件外部传递过来,但没有在props配置中声明的属性,相当于this.$attrs。
  • slots:收到的插槽内容,相当于this.$slots。
  • emit:分发自定义事件的函数,相当于this.$emit。(在子组件中添加一个属性:emits:[‘hello’],用于通知父组件:我收到了你自定义的属性,否则控制台会有一个警告)
    在这里插入图片描述
    在这里插入图片描述

二、 计算属性与监视

1. computed函数

  • 与Vue2.0中computed配置功能一致
  • 写法
    import { computed, reactive } from 'vue'
    
    setup(){
        let person = reactive({
            firstName:'张',
            lastName:'三'
        })
        
        // 计算属性简写---只读
        let fullName = computed( ()=> {
            return person.firstName + '-' +person.lastName
        })
        
        // 计算属性完整---可读可改
        let fullName = computed({
            get(){
                return person.firstName + '-' +person.lastName
            },
            set(value){
                const nameArr = value.split('-')
                person.firstName = nameArr[0]
                person.lastName = nameArr[1]
            }
        })     
    }

2. watch函数

  • 与Vue2.0中watch配置功能一致
  • 两个‘小坑’:
    (1)监视reactive定义的响应式数据时,oldValue无法正确获取,强制开启了深度监视(deep配置失效)
    (2)监视reactive定义的响应式数据中某个属性时:deep配置有效
  import { watch,ref,reactive } from 'vue' 
    setup(){
        let sum = ref(0)
        let msg = ref('你好')
        let person = reactive({
            name:'张三',
            age:18,
            job:{
                j1:{
                    salary:20
                }               
            }
        })
        
        // 情况一:监视ref所定义的一个响应式数据
        watch(sum, (newValue, oldValue) => {
            console.log('sum变化了',newValue, oldValue)
        // 配置项写在watch的第三个参数中,但deep配置无效
        },{immediate: true, deep: true})
        
        // 情况二:监视ref所定义的多个响应式数据
        watch([sum, msg], (newValue, oldValue) => {
            console.log('sum或msg变化了',newValue, oldValue)
        })
        
        // 情况三:监视reactive所定义的一个响应式数据的全部属性
        // 1.注意:此处无法正确的获取oldValue
        // 2.注意:强制开启了深度监视(deep配置无效)
        watch(person, (newValue, oldValue) => {
            console.log('person变化了',newValue, oldValue)
        })
        
        // 情况四:监视reactive所定义的一个响应式数据中的某个属性
        watch( () => person.age, (newValue, oldValue) => {
            console.log('person的age变化了',newValue, oldValue)
        })
        
        // 情况五:监视reactive所定义的一个响应式数据中的某些属性
        watch([ () => person.name, () => person.age], (newValue, oldValue) => {
            console.log('某些属性变化了',newValue, oldValue)
        })
        
        // 特殊情况
        watch(() => person.job,(newValue, oldValue) =>{
            console.log(newValue, oldValue)
        },{deep: true})
        
        return {
            sum,
            msg
        }
    }

情况二:
在这里插入图片描述
在这里插入图片描述
watch中的value问题
在这里插入图片描述

第一个sum是基本数据类型,第二个也可以写成情况情况三,加一个deep:true

3. watchEffect函数

  • watch的套路是:既要指明监视的属性,也要指明监视的回调。
  • watchEffect的套路是:不用指明监视哪个属性,监视的回调中用到哪个属性,就监视哪个属性。
  • watchEffect有点像computed:

(1)但computed注重的是计算出来的值(回调函数的返回值),所以必须写返回值。
(2)而watchEffect更注重的是过程(回调函数的函数体),所以不用写返回值。

import { watchEffect} from 'vue'
    
    // watchEffect所指定的回调中用到的数据只要发生变化,则直接重新执行回调
    setup(){
        watchEffect(()=>{
            const x1 = sum.value
            console.log('watchEffect配置的回调执行了') //用到sum监听sum
        })
    }

三、参考链接

[01] Vue 3 学习笔记

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

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

相关文章

GitLab名词介绍

GitLab名词介绍 分支:active、stale、default、protected IDEA中git面板:本地、远程、HEAD 合并时的选项:Delete、squash 查看Git常用操作 分支:active、stale、default、protected 在分支页面下,有active、stale…

k8s中kubectl陈述式/声明式资源管理

k8s陈述资源管理方法的说明 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息&…

TongWeb8关于内存泄露提示: To prevent a memory leak

原因: 该问题与 https://blog.csdn.net/realwangpu/article/details/109510297 相同,TongWeb7, TongWeb8在卸载应用时,会尝试回收可能存在的内存泄露, 本质应该从应用方面解决。 解决办法: 若无法修改应用&#xff0c…

深度学习神经网络学习笔记-论文研读-transformer

摘要 优势序列转导模型基于复杂的循环或包括一个编码器和一个解码器的卷积神经网络。最好的表现良好的模型还通过attention 连接编码器和解码器机制。我们提出了一种新的简单的网络架构,Transformer, 完全基于注意力机制,省去了递归和卷积完…

【成都理工826】22年真题及解析

哈喽大家好,鉴于真题系列反馈很不错,我决定重启真题系列!之前更新的22真题合集点击这里: 成都理工826信号与系统难度不是特别大,但是对计算的要求比较高。掌握好基础,计算细心是可以拿高分的。本套试题内容…

【我们一起60天准备考研算法面试(大全)-第四天 4/60(二叉搜索树与表达式树)】【每天40分钟,我们一起用60天准备 考研408-数据结构(笔试)】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

github搜索技巧笔记

一、了解 GitHub Watch按钮 Watch可以理解为关注的意思,默认情况下是Not watching,当选择Watch后,你会收到这个GitHub项目的所有动态。比如:有人发起pull request或者issue等。接收动态方式包括个人通知中心或者邮箱。 如果某个…

TypeScript - 函数(中)

目录 1、编写良好泛型函数的准则 1.1 向下推送类型参数 1.2 使用较少的类型参数 1.3 类型参数应出现两次 2、可选参数 3、回调中的可选参数 4、函数重载 5、重载签名和实现签名 6、写好重载 1、编写良好泛型函数的准则 编写泛型函数很有趣,并且很容易被类…

Kibana对索引库的操作(3)

这里我们主要是对索引库进行各种查询的操作,所以要提前准备一些数据 POST /leq/goods/3 {"title": "小米手机","images": "3.jpg","price": 4299,"stock": 200,"saleable": true,"subTitle":…

读发布!设计与部署稳定的分布式系统(第2版)笔记20_实例层之代码

1. 术语的定义 1.1. 服务 1.1.1. 指共同协作、以单元的形式对外提供功能的跨机器进程集合 1.1.2. 一个服务可以由多种可执行文件组成 1.1.3. 一个服务可能包含来自多个可执行文件的多个进程 1.1.4. 可能对外呈现单个IP地址,并在后台进行负载均衡 1.1.5. 可能有…

潇洒郎: bat文件与vbs文件, 执行命令行命令以及执行时无console, reg文件注册表

截图.bat start snippingtool 锁屏.bat rundll32.exe user32.dll,LockWorkStation redis.bat cd %~dp0 redis-server.exe redis.windows.conf vbs Set ws CreateObject("Wscript.Shell") ws.run "cmd /c C:/Python27/Scripts/ride.bat",vbhide 在上…

记录好项目D23

记录好项目 你好呀,这里是我专门记录一下从某些地方收集起来的项目,对项目修改,进行添砖加瓦,变成自己的闪亮项目。修修补补也可以成为毕设哦 本次的项目是个基于Springboot教务管理系统 一、系统介绍 这个项目是一个简单的教…

Slowhttptest----DoS攻击工具

Slowhttptest----DoS攻击工具 文章目录 slowhttptestcentos下安装slowhttptestUbuntu 20.04 LTS下安装slowhttptest使用 slowhttptest SlowHTTPTest 是依赖 HTTP 协议的慢速攻击 DoS 攻击工具。 工具的设计基本原理是服务器在请求完全接收后才会进行处理。 如果客户端的 HTT…

香港银行开个人账户应该选择哪个银行,附详细指南

香港现在陆续通关,开户是越来越方便,目前已经很多有账户需求的都过去开户了,那现在个人在香港银行开户的话可以开哪些银行呢?我列举了几个,可以参考下 汇丰个人户,当场开好拿卡使用 恒生个人户&#xff0…

商标注册 | 美国商标注册资料、流程、时间、方式一文详解

中国对外贸易市场中,美国是当仁不让的重要出口市场,这成为众多国内企业产品出海的先选目的地。产品出口也会涉及到一系列知识产权问题,而这个问题之一就是美国商标的注册。 美国的商标保护非常完善,它不仅可以阻止侵权商品进入美…

【ts】变量的类型注解

ts使用类型注解的好处:使用类型注解,可以使代码更加清晰和易于理解,在处理复杂的数据解构的时候,提高代码的可读性和可维护性。 在vue3中,类型注解是可选的,可用可不用,如果不用,vue…

机器学习 day22(ReLU激活函数,激活函数的种类,如何选择激活函数)

ReLU激活函数 当问题的结果是二元的,则a的范围是(0,1)激活函数g(z)可以用sigmoid激活函数。如果问题的结果是多元的,如让a的范围取(0,∞),激活函数g(z)可以选用ReLU激活函数,他在z…

深入理解预训练(pre-learning)、微调(fine-tuning)、迁移学习(transfer learning)三者的联系与区别

1. 什么是预训练和微调 你需要搭建一个网络模型来完成一个特定的图像分类的任务。首先,你需要随机初始化参数,然后开始训练网络,不断调整参数,直到网络的损失越来越小。在训练的过程中,一开始初始化的参数会不断变化。…

prometheus进程监控配置告警及解决grafana监控面板不展示主机名问题

process_exporter进程监控及告警 监控服务器全部或某些进程是否健康,以及进程所占用资源是否异常使用process_exporter监测器进行进程信息的采集与node_exporter监测器相同,需要监测哪台服务器的进程,就将process_exporter监测器部署在哪台 安…

python提取GO信息

1.原始数据: 原始数据链接: http://current.geneontology.org/ontology/go-basic.obo原始数据样式: 2.目标格式: 3.代码: with open("go-basic.obo","r") as file:lib{}for line in file:lin…