VU3-02

news2024/11/24 17:46:00

1.一些小点

        1.1 npm i -D less (安装less)

                -D 安装依赖到开发环境中

                        只在开发中生效

                        正式打包的时候没有它,只在开发时有效

        1.2 父子组件传参 

                (1)子组件中定义自己的参数和事件

                        父传子:const props = defineProps(["item","name"])

                        子传父:const emit = defineEmits(["deleteItem"])

                (2) 子组件中可以直接使用父组件传递过来的数据

                           子组件中也可以唤起删除事件

                                emit("deleteItem",传递的数据)

                            子组件的模板中可以直接通过

                                $emit("事件名字",参数)

        1.3 计算属性与监听属性

                计算属性:会有缓存,基于当前属性做派生,支持缓存,只有以来数据放生改变时,才

        会重新进行计算,返回一个属性

                监听属性:不支持缓存,数据变化,直接会触发相应的操作,执行一个过程

                VUE3中解构取值会丢失响应式

        1.4 监听数据渲染

                使用swiper时,初始化时依赖DOM,所以需要等到界面渲染完成之后再进行初始化。

                如果数据是静态的,界面会在mounted时渲染完成

                如果数据是通过接口请求的,有可能我们请求到数据的时候,mounted已经执行过了

                给数据设置值之后,界面会在updated更新,但我们在开发过程中一般不会操作updated,

        容易死循环

                所以VUE提供了一个钩子函数

                        VUE2中:this.$nextTick()

                        VUE3中:nextTick()

                使用此钩子函数可以确保在DOM更新完成后执行回调函数,以便获取最新的DOM状态

 2.VUE3计算属性与监听

        2.1 watch函数

watch([firstName, secondName], () => {
  fullName.value = firstName.value + secondName.value
}, {
  immediate: true,    //初始化时立即执行一次
  deep: true     //深度监听,当监听的是引用数据类型时,监听地址和属性的变化
})
watch([() => userName.firstName], () => {  //监听对象中的某一个属性
  fullName.value = userName.firstName + userName.secondName
})
    • 与watch配置功能一致
    • 监视指定的一个或多个响应式数据, 一旦数据变化, 就自动执行监视回调
    • 默认初始时不执行回调, 但可以通过配置immediate为true, 来指定初始时立即执行第一次
    • 通过配置deep为true, 来指定深度监视

        2.2 computed函数

const fullName=computed({
  get:()=>firstName.value+'·'+secondName.value,
  set:(value:string)=>{          //可以给计算属性进行赋值的操作
    firstName.value=value.split('·')[0]
    secondName.value=value.split('·')[1]
  }
})

        2.3 watchEffect函数

watchEffect(()=>{
  fullName.value=firstName.value+secondName.value
})
    • 不用直接指定要监视的数据, 回调函数中使用的哪些响应式数据就监视哪些响应式数据
    • 默认初始时就会执行第一次, 从而可以收集需要监视的数据
    • 监视数据发生变化时回调

3.自定义hook函数

         3.1 收集用户鼠标点击的页面坐标

import {onBeforeUnmount, onMounted, ref} from "vue";

export default function useCustomMouseClick(){
    const x=ref(-1)
    const y=ref(-1)
    function onMouseClick(e:MouseEvent){
        x.value=e.pageX
        y.value=e.pageY
    }
    onMounted(()=>{
        document.addEventListener("click",onMouseClick)
    })
    onBeforeUnmount(()=>{
        document.removeEventListener("click",onMouseClick)
    })
    return{
        x,y
    }
}

        3.2 封装ajax请求的hook函数

import {ref} from "vue";
import axios from "axios";

export default function(url:string,params:{}){
    const loading=ref(true)
    const data=ref()
    const fd=new URLSearchParams()
    Object.keys(params).forEach(key=>{
        fd.append(key,params[key])
    })
    axios.post(url,fd).then(res=>{
        data.value=res.data.rows
    }).finally(()=>{
        loading.value=false
    })
    return {
        loading,
        data
    }
}

 4.VUE3的生命周期

  • beforeCreate -> 使用 setup()
  • created -> 使用 setup()
  • beforeMount -> onBeforeMount
  • mounted -> onMounted
  • beforeUpdate -> onBeforeUpdate
  • updated -> onUpdated
  • beforeDestroy -> onBeforeUnmount
  • destroyed -> onUnmounted
  • errorCaptured -> onErrorCaptured
  • onRenderTracked
    • 注册一个调试钩子,当组件渲染过程中追踪到响应式依赖时调用。
    • 这个钩子仅在开发模式下可用,且在服务器端渲染期间不会被调用。
  • onRenderTriggered
    • 注册一个调试钩子,当响应式依赖的变更触发了组件渲染时调用。
    • 这个钩子仅在开发模式下可用,且在服务器端渲染期间不会被调用。

 5.toRefs

        把一个响应式对象转换成普通对象,该普通对象的每个 property 都是一个 ref

        应用: 当从合成函数返回响应式对象时,toRefs 非常有用,这样消费组件就可以在不丢失响应式的情况下对返回的对象进行分解使用

        问题: reactive 对象取出的所有属性值都是非响应式的

        解决: 利用 toRefs 可以将一个响应式 reactive 对象的所有原始属性转换为响应式的 ref 属性

import {reactive, toRefs} from "vue";

const user=reactive({
  name:"张三",
  age:18
})
console.log(toRefs(user))
console.log(user)

        下图是输出 toRefs(user)和user,可看到 toRefs(user)中的name和age属性为响应式的ref属性,而user中的name和age为非响应式的

 6. ref获取元素

         注意操作dom元素在onMounted的生命周期

<template>
    <div ref="dom1">我是dom1</div>
    <div ref="dom2">我是dom2</div>
</template>
<script setup lang="ts">
import {onMounted, reactive, ref, toRefs} from "vue";
    const dom1=ref()
    const dom2=ref()
    onMounted(()=>{
      console.log(dom1.value,'这是dom1')
      console.log(dom2.value,'这是dom2')
    })
</script>

 7.VUE3的路由

        7.1 路由跳转

                router.push()

         7.2 获取路由参数

                useRoute().query 

8.VUE3的store (VUEX)

import {defineStore} from "pinia";
import {computed, ref} from "vue";

export default defineStore("user", () => {
    const name = ref('')
    const isLogin = ref(false)

    function changeName() {
        name.value = name.value + 1
    }

    const nameCompute = computed(() => {
        return '《' + name.value + '》'
    })
    return {
        name, isLogin, changeName, nameCompute
    }
})

 VUE3中的VUEX使用pinia,只有state,getter,action

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

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

相关文章

利用读时建模等数据分析能力,实现网络安全态势感知的落地

摘要&#xff1a;本文提出一种基于鸿鹄数据平台的网络安全态势感知系统&#xff0c;系统借助鸿鹄数据平台读时建模、时序处理、数据搜索等高效灵活的超大数据存储和分析处理能力&#xff0c;支持海量大数据存储、分类、统计到数据分析、关联、预测、判断的网络安全态势感知能力…

MySQL索引优化分析和锁详解

MySQL 1. 索引 1.1 索引的概述 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构&#xff08;有序&#xff09; 1.2 索引的优缺点 优点 提高数据检索效率,降低磁盘IO的成本通过索引列对数据进行排序, 降低数据排序的成本,降低CPU的消耗 缺点 索引是需要…

【使用回溯法求解八皇后问题(92个解)】

在每一个横列、竖列、斜列都只有一个皇后 解决的冲突 包括行、列和两条对角线规定每一行放置一个皇后&#xff0c;不会造成行上的冲突 当第col列被某个皇后占领之后&#xff0c;则同一列上的所有空格都不能再放置皇后&#xff0c;并且要把flag[col]置为被占领状态 对角线有两个…

【Docker】Docker的通信安全

Docker的通信安全 前言一、Docker 容器与虚拟机的区别1. 隔离与共享2. 性能与损耗 二、Docker 存在的安全问题1. Docker 自身漏洞2. Docker 源码问题 三、Docker 架构缺陷与安全机制1. 容器之间的局域网攻击2. DDoS 攻击耗尽资源3. 有漏洞的系统调用4. 共享 root 用户权限 四、…

OBS 迁移--华为云

一、创建迁移i任务 1. 登录管理控制台。 2. 单击管理控制台左上角的 在下拉框中选择区域。 3. 单击“ 服务列表 ”&#xff0c;选择“ 迁移 > 对象存储迁移服务 OMS ”&#xff0c;进入“ 对象存储迁移服务 ”页面。 4. 单击页面右上角“ 创建迁移任务 ”。 5. 仔细阅读…

卡尔曼滤波算法原理及示例

例程:物体做匀速运动每秒运动1m,观测器观测方差为1m

安全学习DAY06_抓包技术-HTTPHTTPS

抓包技术-HTTP&HTTPS HTTP&HTTPS抓包针对Web&APP&小程序&PC应用等 本节目的&#xff1a; 掌握几种抓包工具证书安装操作掌握几种HTTP&HTTPS抓包工具的使用学会Web&#xff0c;APP&#xff0c;小程序&#xff0c;PC应用等抓包了解本节课抓包是针对哪些…

大数据课程C5——ZooKeeper的应用组件

文章作者邮箱&#xff1a;yugongshiyesina.cn 地址&#xff1a;广东惠州 ▲ 本章节目的 ⚪ 掌握Zookeeper的Canal消费组件&#xff1b; ⚪ 掌握Zookeeper的Dubbo分布式服务框架&#xff1b; ⚪ 掌握Zookeeper的Metamorphosis消息中间件&#xff1b; ⚪ 掌握Zo…

Docker的安装与部署

Docker 基本概念介绍 通俗理解&#xff1a;镜像是类&#xff0c;容器是对象实例 仓库 应用商店、镜像 下载的应用安装程序、容器 应用程序 镜像(Image) 这里面保存了应用和需要的依赖环境 为什么需要多个镜像&#xff1f;当开发、构建和运行容器化应用程序时&#xff0c;我们…

【Postman】Newman安装与环境配置完整版(内含安装过程中遇到的问题与解决方案)

文章目录 概要Newman安装三步走一、nodejs安装与环境配置1、安装2、环境配置 二、安装newman1、步骤2、问题与解决方案 三、安装newman-reporter-html 概要 Newman&#xff1a;一款基于nodejs开发的可以运行Postman脚本的工具&#xff0c;并且可以生成测试报告。本文介绍了New…

【Linux】信号补充与总结

可重入函数 【分析】 mian函数正在调用insert函数向链表中插入节点。insert函数分为两步&#xff0c;刚刚执行完第一步时此时硬件发生中断&#xff0c;使进程切换到内核。中断处理完毕切换到用户态之前发现有信号未决&#xff0c;于是进入了信号的处理函数&#xff0c;信号的处…

XGBoost实例——皮马印第安人糖尿病预测和特征筛选

利用皮马印第安人糖尿病数据集来预测皮马印第安人的糖尿病&#xff0c;以下是数据集的信息&#xff1a; Pregnancies&#xff1a;怀孕次数Glucose&#xff1a;葡萄糖BloodPressure&#xff1a;血压 (mm Hg)SkinThickness&#xff1a;皮层厚度 (mm)Insulin&#xff1a;胰岛素 2…

硬件——光模块

简介 光模块的作用就是发送端把电信号转换成光信号&#xff0c;通过光纤传送后&#xff0c;接收端再把光信号转换成电信号。 常见光模块 GBIC 说明&#xff1a;已淘汰产品 速率&#xff1a;1Gbps 出现时间&#xff1a;2000年之前 SFP 说明&#xff1a;GBIC的升级 速率&…

Spring依赖注入方式,自动装配及自动装配特征

Spring依赖注入方式 一、setter注入1.1简单类型1.2引用类型&#xff08;基本数据类型与String&#xff09; 二、构造器注入1.1简单类型1.2引用类型&#xff08;基本数据类型与String&#xff09; 三、依赖注入方式选择四、自动装配依赖自动装配特征 总结 一、setter注入 依赖注…

Windows下安装Hadoop(手把手包成功安装)

Windows下安装Hadoop&#xff08;手把手包成功安装&#xff09; Windows下安装Hadoop&#xff08;手把手包成功安装&#xff09;一、环境准备1.1、查看是否安装了java环境 二、下载Hadoop的相关文件三、解压Hadoop安装包四、替换bin文件夹五、配置Hadoop环境变量六、检查环境变…

UWB自组网定位技术助力消防救援、消防训练人员定位调度!

在消防救援领域&#xff0c;保障消防人员的人身安全是头等大事&#xff01;而保障消防人员的生命安全的关键在于确认其在火场中所在的位置&#xff0c;一旦遇险&#xff0c;可以及时通知后台管理人员和现场调度人员&#xff0c;也方便管理人员及时调度周围救火人员及时援手施救…

Oracle 截取指定字符到目标串的末尾

SQL&#xff1a; SELECT-- 目标字符串 目标字符串 指定符号 最后一个 最后一个字符位置1 substr( HG/2106010103/YG\FJSJ\SXKTFJ\FJ03_JPHD, instr( HG/2106010103/YG\FJSJ\SXKTFJ\FJ03_…

嵌入式linux通用spi驱动之spidev使用总结

Linux内核集成了spidev驱动&#xff0c;提供了SPI设备的用户空间API。支持用于半双工通信的read和write访问接口以及用于全双工通信和I/O配置的ioctl接口。使用时&#xff0c;只需将SPI从设备的compatible属性值添加到spidev区动的spidev dt ids[]数组中&#xff0c;即可将该SP…

【后端面经】微服务架构( 1-4) | 降级:为什么马服要关闭所有人聊天?

文章目录 一、 前置知识1、什么是降级?2、降级的典型应用3、为什么要降级?4、降级的分类5、如何降级?A) 降级的应用场景B) 跨服务降级C) 提供有损服务二、面试环节1、面试准备2、基本流程3、亮点方案A) 读写服务降级写服务B) 快慢路径降级慢路径三、章节汇总 在熔断章…

opencv-23 图像几何变换02-翻转-cv2.flip()

在 OpenCV 中&#xff0c;图像的翻转采用函数 cv2.flip()实现 &#xff0c;该函数能够实现图像在水平方向翻转、垂直方向翻转、两个方向同时翻转&#xff0c;其语法结构为&#xff1a; dst cv2.flip( src, flipCode )式中&#xff1a;  dst 代表和原始图像具有同样大小、类…