当前位置: 首页 > news >正文

VU3-02

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.pageXy.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

相关文章:

VU3-02

1.一些小点 1.1 npm i -D less (安装less) -D 安装依赖到开发环境中 只在开发中生效 正式打包的时候没有它&#xff0c;只在开发时有效 1.2 父子组件传参 &#xff08;1&#xff09;子组件中定义自己的参数和事件 父传子&#xff1a;const props defineProps(["item&quo…...

Linux新手小程序——进度条

前言 目录 前言 需要先了解 1.\r和\n 2.缓冲区 一.理解字符的含义&#xff1a; 学习c语言时&#xff0c;我们可以粗略把字符分为可显字符和控制字符. 在按回车换到下一行开始的操作时&#xff0c;实际上是进行了两个操作&#xff1a;1.让光标跳到下一行&#xff08;只…...

会点C++还需要再学Python吗?

提到的C、数据结构与算法、操作系统、计算机网络和数据库技术等确实是计算机科学中非常重要的基础知识领域&#xff0c;对于软件开发和计算机工程师来说&#xff0c;它们是必备的核心知识。掌握这些知识对于开发高性能、可靠和安全的应用程序非常重要。Python作为一种脚本语言&…...

Ceph入门到精通- Linux 磁盘管理(block 与 inode)

1 硬盘 block 与 inode 详解 1.1 Sector&#xff08;扇区&#xff09;与 Block&#xff08;块&#xff09; 1&#xff09; 硬盘的最小存储单位&#xff1a;sector&#xff08;扇区&#xff09;&#xff0c;每个扇区储存 512 字节&#xff1b;操作系统会一次性连续读取多个…...

安全DNS,状态码,编码笔记整理

一 DNS DNS&#xff08;Domain Name System&#xff09;是互联网中用于将域名转换为IP地址的系统。 DNS的主要功能包括以下几个方面&#xff1a; 域名解析&#xff1a;DNS最主要的功能是将用户输入的域名解析为对应的IP地址。当用户在浏览器中输入一个域名时&#xff0c;操作…...

【业务功能篇53】Springboot 数据封装对象

Entity、VO、DTO解释 1&#xff09;Entity&#xff1a;实体&#xff0c;与数据库的每一行数据打交道的&#xff0c;它的属性对应数据库每个字段 class User{ private Long idCard; private String name; private Date birthday; ...... } 对应数据库的id&#xff0c;name&…...

将Spring Session存储到Redis中实现持久化

文章目录 Session持久化1. 添加依赖2. 配置redis连接信息3. 存储和读取session从Redis Session持久化 1. 添加依赖 在项目中添加session依赖和redis依赖&#xff0c;如下所示&#xff1a; <dependency><groupId>org.springframework.boot</groupId><art…...

Git工作中常用命令

模拟一个git完整命令流程 有一个名为 example.txt 的文本文件 Hello, this is some text.1、做一些修改并查看文件的差异&#xff1a; # 修改 example.txt 文件 echo "Hello, this is some updated text." > example.txt查看文件的差异 git diffgit diff 命令…...

【电路效应】信号处理和通信系统模型中的模拟电路效应研究(SimulinkMatlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码、Simulink仿真实现 &#x1f4a5;1 概述 在信号处理和通信系统模型中&#xff0c;模拟电路效应研究是指考虑到实际电路的特性对信号进行建模和分析的过程。模拟电路效应…...

Spring 的元注解

一、元注解介绍 1.1.源码引入 1.2.元注解介绍 从上面的图片可知&#xff0c;Spring 有四个【负责注解其他注解】的元注解&#xff0c;分别是&#xff1a; Target&#xff1a;标识该注解可以用于标注哪些程序元素&#xff0c;比如类、方法、字段等。 Retention&#xff1a;标…...

【前缀和】238. 除自身以外数组的乘积

238. 除自身以外数组的乘积 解题思路 前缀与后缀的思路对于给定索引i&#xff0c;将它左边的所有数字乘积乘以右边所有数字的乘积初始化两个数组L R计算L[i] L[i - 1] * nums[i - 1] 也就是左侧所有数字的乘积计算R[i] R[i 1] * nums[i 1] 也就是右侧所有数字的成绩计算L…...

【Java中间件】RocketMQ

RocketMQ 一、MQ概述 Message Queue&#xff0c;是一种提供消息队列服务的中间件。提供了消息生产、存储、消费全过程API的软件系统。 MQ的作用 限流削峰&#xff1a;当用户发送超量请求时&#xff0c;将请求暂存&#xff0c;以便后期慢慢处理。如果不使用MQ暂存直接请求到…...

Megatron-LM、NVIDIA NeMo、MegaMolBART 、model_optim_rng.pt 文件是什么?

本文涉及以下几个概念&#xff0c;分别是&#xff1a; Megatron和Megatron-LM-v1.1.5-3D_parallelism NVIDIA NeMo Megatron和Megatron-LM-v1.1.5-3D_parallelism是什么&#xff1f; Megatron是由NVIDIA开发的一种用于训练大规模语言模型的开源框架。它旨在提供高效的分布式…...

2023年信息系统项目管理师如何报名?老司机告诉你

信息系统项目管理师是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目之一&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资…...

linux ubuntu系统 命令备忘

一、安装软件包的命令 1、验证安装包是否安装 dpkg -s <软件包名> 2、从软件源服务器获取最新的软件信息并缓存到本地 apt update 3、从本地仓库中对比系统中所有已安装的软件&#xff0c;如果有新版本的话则进行升级 apt upgrade 4、列出本地仓库中所有的软件包名…...

我的第一个flutter项目(Android Webview)

前言&#xff1a;flutter开发环境搭建Flutter的开发环境搭建-图解_☆七年的博客-CSDN博客 第一个flutter简单项目&#xff0c;内容是一个主界面&#xff0c;其中&#xff1a; 1.内容点击数字自增 2.跳转一个空页&#xff0c; 3.跳转一个WebView界面 其中涉及添加主键&#xf…...

微信机器人搭建详细教程

确保已安装Python和pip。 在D盘上创建名为wxbot的文件夹&#xff0c;并将你的Python机器人项目文件放在这个目录中。 在D盘的wxbot文件夹中打开命令行工具&#xff0c;并创建一个新的Python虚拟环境&#xff08;可选&#xff09;&#xff1a; python -m venv venv激活虚拟环…...

opengauss安装

opengauss安装 系统环境 Redhat版本&#xff1a;redhat7.6 虚拟机ip&#xff1a;192.168.5.144 Gauss版本&#xff1a;openGauss-5.0.0-CentOS-64bit-all.tar.gz 企业版 一&#xff0e;准备软硬件环境 1.1 安装依赖包 yum -y install bzip2 python3 libaio-devel flex bis…...

什么是SVM算法?硬间隔和软间隔的分类问题

SVM全称是supported vector machine(支持向量机)&#xff0c;即寻找到一个超平面使样本分成两类&#xff0c;并且间隔最大。 SVM能够执行线性或⾮线性分类、回归&#xff0c;甚至是异常值检测任务。它是机器学习领域最受欢迎的模型之一。SVM特别适用于中小型复杂数据集的分类。…...

Normalization(BN and LN) in NN

Batch Normalization 称为批标准化。批是指一批数据&#xff0c;通常为 mini-batch&#xff1b;标准化是处理后的数据服从 N ( 0 , 1 ) N(0,1) N(0,1) 的正态分布。在训练过程中&#xff0c;数据需要经过多层的网络&#xff0c;如果数据在前向传播的过程中&#xff0c;尺度发…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...