vue补充继上一篇

 

 组合式API-reactive和ref函数

1.reactive()

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

1.从vue包中导入reactive函数

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

2.ref()

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

 1.从vue包中导入ref函数

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

ref是在原有传入数据的基础上,外层包了一层对象,报成了复杂类型

底层,包成复杂类型之后,再借助reactive实现的响应式。注意点:访问数据,需要通过.value

注意点:

1.脚本中访问数据,需要通过.value

2.在template中,.value不需要加(帮我们扒了一层)

推荐:以后声明数据,统一用ref

区别:

1.reactive和ref函数的共同作用是什么?

用函数调用的方式生成响应式数据

2.reactive  和  ref?

  1. reactive不能处理简单类型的数据
  2. ref参数类型支持更好但是必须通过.value访问修改
  3. ref函数的内部实现依赖于reactive函数

3. 在实际工作中推荐使用 ref

组合式API-computed

1.计算属性中不应该有“副作用”

比如异步请求、修改dom

2.避免直接修改计算属性的值

计算属性应该是只读的,特殊情况可以配置get set

组合式API-watch

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

两个额外参数:1.immediate(立即执行)2.deep(深度侦听)

侦听单个数据

1.导入watch函数

2.执行watch函数传入要侦听的响应式数据(ref对象)和回调函数

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

侦听多个数据

immediate

说明:在监听器创建时立即触发回调,响应式数据变化之后继续执行回调

deep

deep深度见识,默认watch进行的是浅层监视

const ref1=ref(简单类型)可以直接监视

const ref2=ref(复杂类型)监视不到复杂类型内容数据的变化 ,必须开启deep模式

 

精确侦听某个属性

需求:在不开启deep的情况下,侦听age变化,只有age变化时才执行回调

 

 生命周期API(选项式vs组合式)

 onMounted可以调用多次,并不会冲突,而是按照顺序依次执行。

组合式API-父子通信

基本思想

1.父组件中给子组件绑定属性

2.子组件内部通过props选项接受

 

defineProps原理:就是编译阶段的一个标识,实际编译器解析时,遇到后会进行编译转换。

 组合式API-子传父

基本思想:

1.父组件中给子组件标签通过@绑定事件

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

 

组合式API-模版引用(Dom)

通过ref标识获取真是的dom对象或者组件实例对象 

 1.调用ref函数生成一个ref对象

2.通过ref标识绑定ref对象到标签

3.通过ref.value获得绑定的dom

(拿到组件是为了拿到里面的属性和方法!)

defineExpose()

默认情况下在<script setup>语法糖下组件内部的属性和方法是不开放给父组件访问的,可以通过defineExpose编译宏指定那些属相和方法允许访问。

 总结

组合式API-provide和inject

作用和场景

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

夸层传递普通数据

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

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

 子孙修改爷爷中的数据:可以给子孙传递一个修改该数据的方法

Vue3.3新特性-defineOptions

因为setup的引入无法使用name,emits等选项, 所以在Vue3.3中新引入了definOptions宏。顾名思义,主要是用来定义OPtions API的选项。可以用 defineOptions定义任意的选项,props,emits,expose,stots除外(因为这些可以使用definexxx来做到)

Vue3.3新特新-defineModel

在 Vue3中,自定义组件上使用v-model,相当于传递一个modelValue属性,同时触发vpdate:modelValue事件

 

Pinia快速入门

什么是P inia

Pinia是Vue的最新状态管理工具,是Vuex的替代品

1.提供更加简单的API(去掉了mutation)

2.提供符合,组合式风格的API(和vue3新语法统一)

3.去掉了modules的概念,每一个store都是一个独立的模块

4.配合TypeScript更加友好,提供可靠的类型推断

手动添加Pinia到Vue项目

在实际开发项目的时候,关于PInia的配置,可以在项目创建时自动添加

现在我们初次学习,从零开始:

1.使用VIte创建一个空的Vue3项目

npm create vue@latest

2.按照官方文档安装PInia到项目中

具体步骤请参考官网!

import { defineStore } from 'pinia'// 你可以对 `defineStore()` 的返回值进行任意命名,但最好使用 store 的名字,同时以 `use` 开头且以 `Store` 结尾。(比如 `useUserStore`,`useCartStore`,`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一 ID。
export const useAlertsStore = defineStore('alerts', {// 其他配置...
})

<script setup>import { useCounterStore } from "@/store/counter.js";
const counterStore = useCounterStore();
console.log(counterStore);
</script><template><main><h1>根组件{{ counterStore.count }}-{{ counterStore.msg }}</h1></main>
</template><style scoped></style>

计算属性

import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
//定义store
export const useCounterStore = defineStore('counter', () => {const count = ref(100)const msg = ref('hello pinia')//声明操作数据的方法actionconst addCount = () => {count.value++}//声明基于数据派生的计算属性gettersconst double = computed(() => count.value * 2)return {count,msg,addCount,double}
})

action异步实现

 不能解构store

 Pinia持久化插件

总结:

1.Pinia是用来干什么的?

新一代的状态管理工具,替代Vuex

2.pinia中还需要mutation吗?

不需要,action即支持同步也支持异步

3.Pinia如何实现getter?

computed计算属性函数

4.Pinia产生的store如何解构赋值数据保持响应式?

storeToRefs

5.Pinia如何快速实现持久化?

pinia-plugin-persistedstate

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

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

相关文章

第18篇ESP32platformio-arduino框架-ili9488-3.5lcd显示时间天气

第18篇ESP32platformio-arduino框架-ili9488-lcd显示时间天气 第18篇esp32ili9488lcd显示时间天气 连接方法&#xff1a; 修改WIFI&#xff1a; 关键代码 void setup() {Serial.begin(115200);WiFi.mode(WIFI_STA);WiFi.begin(ssid,password);Serial.print("\r\nConnect…

java中将数组转换成字符串

方法1&#xff1a;使用StringBuilder拼接 基本类型和引用类型兼容 int[] arr {1,2,4,6,9};StringBuilder sb new StringBuilder();for (int i 0; i < arr.length ; i) {if (i!arr.length-1){sb.append(arr[i]",");}else {sb.append(arr[i]);}}System.out.prin…

Axios 封装

请注意以下文件夹&#xff1a; utils下的setToken.js 是token封装&#xff08;封装 Token-CSDN博客&#xff09;,service.js 是axios封装。 Axios封装&#xff1a; 1.安装axios 在项目终端下 输入&#xff1a; npm install axios --save 2.在main.js全局引入axios import…

12.JVM

一.JVM类加载机制:把类从硬盘文件加载到内存中 1.java文件,编写时是一个.java文件,编译后现成一个.class的字节码文件,运行的时候,JVM就会读取.class文件,放到内存中,并且构造类对象. 2.类加载流程: a.加载:找到.class文件,打开文件,读取内容,尝试解析文件内容. b.验证:检查…

C# PortraitModeFilter (人物图片)背景模糊

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Windows.Forms; us…

Marin说PCB之CoilcraftBourns POC 电感的性能对比

十一小长假本来是一件美好事情。可是天有不测风云&#xff0c;小编我却有祸兮来了。本来是公司的硬件同事强哥要回以色列了&#xff0c;最近他们国家那边都在打仗&#xff0c;强哥本着舍身为国的精神回国抗战去了。小编我就想着在他回国之前搞了篮球比赛送别一下他呢&#xff0…

利达卓越:以数字金融,追梦新未来

秉持初心、勇敢前行,便能如火炬照彻黑暗,在平凡的生活中不断创新、保持优势,一步步走向梦想的远方。在金融投资领域,利达卓越广招贤才,坚持创新的原则,以数字技术为金融赋能,与多方市场参与建立长期合作关系,为推动全球经济和社会发展贡献力量,以团队金融优势续写时代华美篇章,…

数据库安全-RedisHadoopMysql未授权访问RCE

目录 数据库安全-&Redis&Hadoop&Mysql&未授权访问&RCE定义漏洞复现Mysql-CVE-2012-2122 漏洞Hadoop-配置不当未授权三重奏&RCE 漏洞 Redis-未授权访问-Webshell&任务&密匙&RCE 等漏洞定义&#xff1a;漏洞成因漏洞危害漏洞复现Redis-未授权…

【计算机组成体系结构】电路基本原理与加法器设计

一、算术逻辑单元—ALU 1.基本的逻辑运算&#xff08;1bit的运算&#xff09; 基本逻辑运算分为&#xff0c;与、或、非。大家应该很熟悉了&#xff0c;与&#xff1a;全1为1&#xff0c;否则为0。或&#xff1a;全0为0&#xff0c;否则为1。非&#xff1a;取反。三个基本的逻…

Unity关键词语音识别

一、背景 最近使用unity开发语音交互内容的时候&#xff0c;遇到了这样的需求&#xff0c;就是需要使用语音关键字来唤醒应用程序&#xff0c;然后再和程序做交互&#xff0c;有点像智能音箱的意思。具体的技术方案方面&#xff0c;也找了一些第三方的服务&#xff0c;比如百度…

华为云云耀云服务器L实例评测|华为云耀云服务器L实例私有库搭建verdaccio(八)

九、华为云耀云服务器L实例私有库搭建verdaccio&#xff1a; Verdaccio 是一个简单的、零配置本地私有 npm 软件包代理注册表。Verdaccio 开箱即用&#xff0c;拥有自己的小型数据库&#xff0c;能够代理其它注册表&#xff08;例如 npmjs.org&#xff09;&#xff0c;缓存下载…

node.js+NPM包管理器+Webpack打包工具+前端项目搭建

javascript运行环境&#xff08;无需依赖html文件&#xff09; BFF&#xff0c;服务于前端的后端 官网下载安装&#xff0c;node -v查看是否安装成功 ①、创建一个01.js文件 //引入http模块 const httprequire(http)//创建服务器 http.createServer(function(request,respo…

【angular】TodoList小项目(已开源)

参考&#xff1a;https://segmentfault.com/a/1190000013519099 文章目录 准备工作headerTodo、Doing、Done样式&#xff08;HTMLCSS&#xff09;功能&#xff08;TS&#xff09;将输入框内容加入todoList&#xff08;addTodo&#xff09;将todo事件改到doing 服务 参考开源后续…

9.Linear Maps

线性映射 线性映射是将向量作为输入并产生一些新向量作为输出的转换。 从坐标定义开始(数组)&#xff0c;再到2&#xff0c;3&#xff0c;并展示它们是如何关联的 线性映射的坐标表示最终是矩阵&#xff0c; 1.坐标定义&#xff08;数组&#xff09; 列向量是向量的坐标表示…

uniapp小程序实现绘制内容,生成海报并保存截图(Painter和Canvas两种方式举例)

一、Painter方法 Painter插件传送门 1.下载资源包 2.将资源包的如下部分 3.使用页面引入组件 ui样式 <paintercustomStyle=margin-left: 40rpx; height: 1000rpx;palette="{{palette}}"bind:imgOK="onImgOK"/>data 中数据(绘制内容,替换区域) pai…

《动手学深度学习 Pytorch版》 8.3 语言模型和数据集

8.3.1 学习语言模型 依靠在 8.1 节中对序列模型的分析&#xff0c;可以在单词级别对文本数据进行词元化。基本概率规则如下&#xff1a; P ( x 1 , x 2 , … , x T ) ∏ t 1 T P ( x t ∣ x 1 , … , x t − 1 ) P(x_1,x_2,\dots,x_T)\prod^T_{t1}P(x_t|x_1,\dots,x_{t-1}) …

uniapp 运行到 app 报错 Cannot read property ‘nodeName‘ of null

uniapp 运行到某一个页面&#xff0c;报错&#xff0c;h5没有问题 Unhandled error during execution of scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repovuejs/coreat <GuiPagecustomHeadertruecustomF…

docker 安装oracle

拉取镜像 拉取oracle_11g镜像 拉取oracle镜像(oracle 11.0.2 64bit 企业版 实例名: helowin) Oracle主要在Docker基础上安装&#xff0c;安装环境注意空间和内存&#xff0c;Oracle是一个非常庞大的一个软件&#xff0c; 建议使用网易镜像或阿里镜像网站这里以oracle 11.0.2…

力扣-461.汉明距离

Method 1 直接比较x&#xff0c;y二进制中的每一位&#xff0c;如果不同则cnt加一&#xff0c;并且x&#xff0c;y每次右移一位 class Solution { public:int hammingDistance(int x, int y) {int cnt 0;while(x > 0 && y > 0) {if((x & 1) ! (y & 1)…

当涉及到API接口数据分析时,主要可以从以下几个方面展开

当涉及到API接口数据分析时&#xff0c;主要可以从以下几个方面展开&#xff1a; 请求分析&#xff1a;可以统计每个API接口的请求次数、请求成功率、失败率等基础指标。这些指标可以帮助你了解API接口的使用情况&#xff0c;比如哪个API接口被调用的次数最多&#xff0c;哪个…