vue3-其余新增API

news/2024/11/28 16:25:06/文章来源:https://www.cnblogs.com/Mickey-7/p/18574498

shallowRef

创建一个响应式数据,但只对顶层属性进行响应式处理,只跟踪引用值的变化,不关心值内部的属性变化

import {shallowRef} from "vue"
import UserInfo from "@/components/UserInfo.vue";let name = shallowRef("vue")
let info = shallowRef({name:"html"})console.log(name.value) // 响应式数据// shallowRef只处理第一层响应式数据,info.value就已经是一层了,不处理value.name
console.log(info.value.name) // 非响应式数据

shallowReactive

创建一个浅层响应式对象,只会使对象的最顶层属性变成响应式的,对象内部的嵌套属性则不会变成响应式的

import {shallowReactive} from "vue"
import UserInfo from "@/components/UserInfo.vue";let info = shallowReactive({name:"html",address:{"email":123}})console.log(info.name) // 响应式数据console.log(info.address.email) // 非响应式数据

通过使用 shallowRef和 shallowReactive来绕开深度响应。浅层式 API 创建的状态只在其顶层是响应式的,对所有深层的对象不会做任何处理,避免了对每一个内部属性做响应式所带来的性能成本,这使得属性的访问变得更快,可提升性能

readonly

用于创建一个对象的深层只读副本

对象的所有嵌套属性都将变为只读,任何尝试修改这个对象的操作都会被阻止(在开发模式下,还会在控制台中发出警告)

用于创建不可变的状态快照、保护全局状态或配置不被修改

import {reactive, readonly} from "vue"
import UserInfo from "@/components/UserInfo.vue";let info = reactive({name:"html",address:{"email":123}})let address = readonly(info.address)// 修改info.address 会同步修改address
// 但是修改address会被拒绝,address只读

shallowReadonly

readonly 类似,但只作用于对象的顶层属性,只将对象的顶层属性设置为只读,对象内部的嵌套属性仍然是可变的,适用于只需保护对象顶层属性的场景

import {reactive, shallowReadonly} from "vue"
import UserInfo from "@/components/UserInfo.vue";let info = reactive({name:"html",address:{"email":123}})let info1 = shallowReadonly(info)// 修改info会同步修改info1
// 但是修改info1会被拒绝,但是可以修改info.1.address

toRaw

用于获取一个响应式对象的原始对象, toRaw 返回的对象不再是响应式的,不会触发视图更新

官网描述:这是一个可以用于临时读取而不引起代理访问/跟踪开销,或是写入而不触发更改的特殊方法。不建议保存对原始对象的持久引用,请谨慎使用。

在需要将响应式对象传递给非 Vue 的库或外部系统时,使用 toRaw 可以确保它们收到的是普通对象

import {reactive, toRaw} from "vue"
import UserInfo from "@/components/UserInfo.vue";// 响应式
let info = reactive({name:"html",address:{"email":123}})// rawInfo变成了原始数据,非响应式数据
let rawInfo = toRaw(info)

markRaw

标记一个对象,使其永远不会变成响应式的

// 定义info
import {markRaw, reactive} from "vue";let info = {name: "vue", ext: {email: 123}}// 转换响应式info
let reactiveInfo = reactive(info)let markRawInfo = markRaw(info)// 不能转换成响应式
let info2 = reactive(markRawInfo)

customRef

自定义ref,使用Vue的ref定义响应式数据,数据发生变化页面会即时更新,而自定义的ref,可以对其依赖项跟踪和更新触发进行逻辑控制

import {customRef} from "vue";let str:string = "hello word"// 创建自定义ref响应式数据,参数是一个回调函数,返回一个对象
// 接收两个参数:track,trigger
let info = customRef((track, trigger) => {return {// info被读取的时候调用get() {// 让vue持续追踪数据,发生变化就去更新track()return str},// info被修改的时候调用set(value:string) {str = value// 前面可以有一些其他处理,处理完再更新// 通知vue页面更新trigger()}}})

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

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

相关文章

YASKAWA安川机器人DX100轴控制基板维修解析知识

ASKAWA安川机器人DX100轴控制基板的维修是一项复杂而精细的工作,要求具备丰富的知识和实践经验。通过与子锐机器人维修联系,希望能企业提供一些有益的参考和帮助,在面对轴板故障时能够迅速准确地找到问题所在并妥善处理。 一、YASKAWA安川机器人维修步骤与方法 1、故障诊断:…

半导体制造领域中的粒子缺陷(Particle Defect)

随着半导体技术的进步,制造过程中的质量控制已成为提高半导体器件性能和可靠性的核心。粒子缺陷不仅会显著降低器件的电气性能,例如导致电路短路或开路等故障,而且对器件的长期可靠性产生严重影响,从而增加了器件性能退化和失效的可能性。 Part1 引 言 半导体制造行业是现…

DSPf28335-GPIO

GPIO(通用输入输出端口 general purpose intput output) DSP TMS320F28335一共176个引脚。包括:电源引脚、晶振引脚、复位引脚、下载引脚、BOOT引脚、GPIO引脚。 除了上述的5类引脚外的GPIO引脚一共88个,88个GPIO引脚又分为A、B、C三类。 A类为0~31; B类为32~63; C类为64…

iOS手机免越狱群控系统:实现同步投屏与多设备管理的新工具

免越狱群控系统概述 免越狱群控系统是一种基于苹果官方接口和网络通信技术的电脑端软件,通过合法合规的方式接入并操控多台iOS设备。该系统无需对iOS设备进行越狱,即可实现集中化、自动化控制。其核心功能包括:同步投屏:实时查看和控制多台iOS设备的屏幕。 批量操作:一键执…

NeRF学习笔记

NeRF 学习笔记参考资料十分钟带你快速入门NeRF原理_哔哩哔哩_bilibili 任务概述网络结构:输入 1. 采样点位置数据集是五维数据。theta phi决定了射线的方向,xyz是相机位置。 但是感觉x,y,z,theta phi为什么不直接用xyz表示?感觉剩下两个信息是冗余的。因为可能和射线有关,所…

考研打卡(29)

开局(29) 开始时间 2024-11-28 14:45:31 结束时间 2024-11-28 15:17:32 明天是1125今天去学冠领了几份资料数据结构具有5层节点的AVL树至少有_______个节点。(南昌大学 2015年) A 10 B 12 C 15 D 17B 答案设Nh表示深度为h的平衡二叉树中含有的最少节点数…

解决水库安全监测难题 长期无外接电源 低功耗设备智能化监测系统

解决水库安全监测难题 长期无外接电源 低功耗设备智能化监测系统国内某水库安全监测项目需要监测点分散,且无外接供电。项目年限为4年,不允许使用太阳能电板。因此,我们需要设备具备低功耗且内置电池的功能。为了满足客户的要求,我们的研发团队将采集仪从NLM511T升级到电池…

Android11修改摄像头前后置方法,触觉智能RK3568开发板演示

RK3566/3568安卓Android11系统下,修改摄像头前后置的方法,触觉智能EVB3568开发板演示本文介绍在Android11系统下,修改摄像头前后置属性的方法。使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、An…

70%效率提升:开源AI技术在医疗用药咨询中的应用

一、系统概述 在医疗行业中,信息的准确性和实时性至关重要。我们的开源免费软件——思通数科AI多模态能力平台,通过集成先进的语音识别(ASR)技术,为医疗行业提供了一个全新的解决方案。该平台不仅能够理解多人对话中的语音指令,还能提供精准的药物咨询和用药指导,极大地…

Symbolic Discovery of Optimization Algorithms

目录概Lion代码Chen X., Liang C., Huang D., Real E., Wang K., Liu Y., Pham H., Dong X., Luong T., Hsieh C., Lu Y. and Le Q. V. Symbolic discovery of optimization algorithms. NeurIPS, 2024.概 本文搜索出了一个优雅的, 且经验上似乎更好的优化器: Lion. Lion作者通…

RAG实验:块大小分割实验、矢量存储;FAISS 与 Chroma、向量存储和 Top k、向量存储中的距离度量

比较 RAG 第 1 部分:块大小分割实验我探索了 RAG 模型中的各种块大小,并使用专为评估检索器组件而设计的 RAGAS 评估器对其进行了评估。如您所知,检索器部分会生成随后输入到语言模型 (LLM) 中的“上下文”。 在这个实验中,我采用了BGE作为嵌入技术(它在 HuggingFace 的排…

ssh登录出现sign_and_send_pubkey: no mutual signature supported

加上-o PubkeyAcceptedKeyTypes=+ssh-rsa 例如:ssh -i key.txt stinky@172.16.1.143 -o PubkeyAcceptedKeyTypes=+ssh-rsa