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

Vue3响应式 ref全家桶

<template><div>{{ man.name }}<hr><button @click="change">修改</button></div>
</template>
<script setup lang="ts">
const man = {name:"cc"}
const change = () =>{man.name = "大cc"
}
</script>
<style scoped></style>

这样的change函数并不能实现修改值

要实现响应式就要利用 ref

ref()

ref接受一个内部值并返回一个响应式且可变的ref对象

ref对象仅仅有一个 .value 属性,指向该内部值

修改值的时候,ref返回的是ES6的class类

通过.value修改

import { ref, isRef, shallowRef, triggerRef, customRef } from 'vue'
<template><div>{{ man.name }}<hr><button @click="change">修改</button></div>
</template>
<script setup lang="ts">
const man = ref({name:"cc"})
const change = () =>{man.value.name = "大cc"
}
</script>
<style scoped></style>

这样就可以实现数据的响应式

泛型控制ref
// 自定义ref类型
type M = {name:string
}
const man = ref<M>({ name: "CC" })

 使用Vue内置的接口类型 Ref

import { Ref } from 'vue'const man = ref<Ref>({ name: "小满" })

 isRef()

isRef() 顾名思义就是判断是否是ref的

import { ref, isRef, shallowRef, triggerRef, customRef } from 'vue'
<template><div>{{ man.name }}<hr><button @click="change">修改</button></div>
</template>
<script setup lang="ts">
const man = ref({name:"cc"})
const change = () =>{man.value.name = "大cc"console.log(isRef(man))  // true
}
</script>
<style scoped></style>

shallowRef与 ref的区别

ref是深层次的,会找到最底层的值去修改

而shallowRef只会找到第一层,也就是 

man.value   这一层

 注意:shallowRef是不能和ref在一起写的,ref会影响shallowRef引起视图更新

triggerRef()

triggerRef会强制更新我们收集的依赖,shallowRef会根据triggerRef作强制的更新,就是因为ref底层调用了triggerRef,会影响shallowRef。

customRef

function myRef<T>(value: T) {let timer: anyreturn customRef((track, trigger) => {// 触发依赖和收集依赖手动实现return {get() {track()return value},set(newValue) {// console.log("触发了");// // 这时候会不停的发送请求// // 试着使用防抖clearTimeout(timer)timer = setTimeout(() => {console.log("触发了");value = newValuetimer = nulltrigger()}, 1000);}}})  // customRef是一个回调函数要求return一个对象,对象里面去实习get和set两个方法// track收集依赖// trigger
}
ref操作DOM
<template><div ref="dom">我是dom元素</div>
</template>
<script setup lang='ts'>import {  ref  } from 'vue'const dom = ref<HTMLDivElement>()console.log(dom.value?.innerHTML) // 我是dom元素
</script>

相关文章:

Vue3响应式 ref全家桶

<template><div>{{ man.name }}<hr><button click"change">修改</button></div> </template> <script setup lang"ts"> const man {name:"cc"} const change () >{man.name "大cc&q…...

Mac(M1芯片)安装多个jdk,Mac卸载jdk

1.jdk下载 oracle官方链接&#xff1a;oracle官方下载链接 2.安装 直接下一步&#xff0c;下一步就行 3.查看是否安装成功 出现下图内容表示安装成功。 4.配置环境变量 open -e .bash_profile 路径建议复制过去 #刷新环境变量 source ~/.bash_profile 5.切换方法 6.jdk…...

Warning message:package ‘ggplot2’ is not available (for R version 3.2.3)

install.packages(ggplot2) Installing package into ‘/usr/local/lib/R/site-library’ (as ‘lib’ is unspecified) Warning message: package ‘ggplot2’ is not available (for R version 3.2.3) 根据你提供的信息&#xff0c;警告消息表明在你的R版本&#xff08;3.2.3…...

Spring Boot 过滤器和拦截器详解

目录 Spring Boot 过滤器1.什么是过滤器2.工作机制3.实现过滤器 Spring Boot 拦截器1. 什么是拦截器2. 工作原理3.实现4.拓展&#xff08;MethodInterceptor 拦截器&#xff09;实现 过滤器和拦截器区别过滤器和拦截器应用场景过滤器拦截器 Spring Boot 过滤器 1.什么是过滤器 …...

Eureka介绍与使用

Eureka是一个开源的服务发现框架&#xff0c;由Netflix开发并在2015年成为Apache的顶级项目。Eureka的核心功能是服务注册与发现&#xff0c;它允许微服务应用在启动时将自己注册到Eureka服务器&#xff0c;并能通过Eureka服务器来发现其他已注册的服务。 使用Eureka有以下几个…...

JVM专题九:JVM分代知识点梳理

今天开始&#xff0c;咱们开始剖析JVM内存划分的原理细节&#xff0c;以及我们创建的那些对象在JVM中到底是如何分配&#xff0c;如何流动的&#xff0c;首先解决第一个问题&#xff1a;JVM内存的一个分代模型:年轻代、老年代、永久通过之前的专题我们知道&#xff0c;那就是我…...

wireshark常用过滤命令

wireshark常用过滤命令 wireshark抓包介绍单机单点&#xff1a;单机多点&#xff1a;双机并行&#xff1a; wireshark界面认识默认布局调整布局(常用)显示FCS错误 wireshark常见列Time回包数据报对应网络模型 wireshark基本操作结束抓包再次开始抓包 **wireshark常用过滤命令**…...

「全新升级,性能更强大——ONLYOFFICE 桌面编辑器 8.1 深度评测」

文章目录 一、背景二、界面设计与用户体验三、主要新功能亮点3.1 高效协作处理3.2 共同编辑&#xff0c;毫无压力3.3 批注与提及3.4 追踪更改3.5 比较与合并3.6 管理版本历史 四、性能表现4.1 集成 AI 工具4.2 插件强化 五、用户反馈与使用案例 一、背景 Ascensio System SIA -…...

线程版服务器实现(pthread_server)

用到的所有方法所需要的参数可以在wrap.c文件中查询&#xff0c;wrap中找不到的直接通过man手册查询 1.首先介绍一下我自己写的包裹文件&#xff0c;里面有各种在可能要用到的方法 wrap.c: #include <stdlib.h> #include <stdio.h> #include <unistd.h> #…...

js异常处理方案

文章目录 异常处理方案同步代码的异常处理Promise 的异常处理async await 的异常处理 感谢阅读&#xff0c;觉得有帮助可以点点关注点点赞&#xff0c;谢谢&#xff01; 异常处理方案 在JS开发中&#xff0c;处理异常包括两步&#xff1a;先抛出异常&#xff0c;然后捕获异常。…...

C++文件路径处理2 - 路径拼接路径解析

1. 关键词2. filesystem.h3. filepath.cpp6. 测试代码7. 运行结果8. 源码地址 1. 关键词 关键词&#xff1a; C 文件路径处理 路径拼接 获取父目录的路径 获取文件名 获取拓展名 跨平台 应用场景&#xff1a; 路径的拼接路径的解析 2. filesystem.h #pragma once#include…...

数据结构5---矩阵和广义表

一、矩阵的压缩存储 特殊矩阵:矩阵中很多值相同的元素并且它们的分布有一定的规律。 稀疏矩阵:矩阵中有很多零元素。压缩存储的基本思想是: (1)为多个值相同的元素只分配一个存储空间; (2)对零元素不分配存储空间。 1、特殊矩阵的压缩存储 &#xff08;1&#xff09;对称矩…...

jquery使用infinitescroll无线滚动+自定义翻页

jquery版本 jquery-1.8.3.js infinitescroll版本 2.0.0 如果infinitescroll版本最新的jquery版本也要用新的 接口用nodejs jquery.infinitescroll.js官网地址 前端代码《接口返回JSON数据》 <!DOCTYPE html> <html lang"en"> <head><meta cha…...

【漏洞复现】锐捷统一上网行为管理与审计系统——远程命令执行漏洞

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 锐捷统一上网行为管理与审计系统naborTable/static_convert.php…...

通义灵码上线 Visual Studio 插件市场啦!

通义灵码&#xff0c;是阿里云出品的一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力&#xff0c;提供代码智能生成、研发智能问答能力。 通义灵…...

GESP 四级急救包(2):客观题真题集

客观题真题集 一、选择题1. 真题梳理2. 真题答案3. 重难点点播(1) 指针和地址(2) 时间复杂度 二、判断题1. 真题梳理2. 真题答案 一、选择题 1. 真题梳理 若函数声明为 void f(int &a, int b, const int &c)&#xff0c;且在主函数内已经声明了 x , y , z x,y,z x,y,…...

VERYCLOUD睿鸿股份确认参展2024年ChinaJoy BTOB商务洽谈馆,期待与你相聚

作为在全球数字娱乐领域兼具知名度与影响力的年度盛会&#xff0c;2024年第二十一届ChinaJoy将于7月26日至7月29日在上海新国际博览中心盛大召开&#xff0c;本届展会主题为&#xff1a;初心“游”在&#xff0c;精彩无限&#xff01;&#xff08;Stay True, Game On.&#xff…...

Java面试题:讨论Spring框架的核心组件,如IoC容器、AOP、事务管理等

Spring框架是一个功能强大且灵活的Java企业级应用开发框架&#xff0c;其核心组件包括以下几个主要部分&#xff1a; 1. IoC容器&#xff08;Inversion of Control Container&#xff09; IoC容器是Spring框架的核心部分&#xff0c;用于管理应用程序的依赖注入&#xff08;D…...

【方案】基于5G智慧工业园区解决方案(PPT原件)

5G智慧工业园区整体解决方案旨在通过集成5G通信技术、物联网、大数据和云计算等先进技术&#xff0c;实现园区的智能化、高效化和绿色化。 该方案首先构建高速、稳定的5G网络&#xff0c;确保园区内设备、人员与物流的实时连接和高效沟通。其次&#xff0c;通过工业物联网技术&…...

使用System.currentTimeMillis获取当前时间

使用System.currentTimeMillis获取当前时间 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨Java中如何使用System.currentTimeMillis()方法来获取…...

别再死记硬背了!用一块74283芯片搞定所有BCD码转换(附实战练习题)

用74283芯片玩转BCD码转换&#xff1a;从原理到实战的终极指南 在数字电路设计与计算机组成原理的学习中&#xff0c;BCD码转换一直是让许多学生头疼的"拦路虎"。传统的死记硬背方法不仅效率低下&#xff0c;更无法应对考试中千变万化的题型。本文将彻底改变这一现状…...

InferenceX:大模型高效推理引擎核心原理与生产部署实战

1. 项目概述&#xff1a;从模型训练到高效推理的最后一公里如果你在AI领域&#xff0c;特别是大模型应用开发上投入过精力&#xff0c;那么对“InferenceX”这个名字可能不会感到陌生。它不是一个全新的训练框架&#xff0c;也不是一个模型仓库&#xff0c;而是精准地瞄准了当前…...

OCR实战三阶段:检测、识别、结构化全流程解析

1. 这不是“把图片变文字”那么简单&#xff1a;OCR背后的真实战场光学字符识别&#xff08;OCR&#xff09;这三个字母&#xff0c;很多人第一反应是“截图转文字”“PDF复制不了&#xff1f;丢给OCR试试”。但如果你真这么想&#xff0c;就等于站在手术室门口说“不就是动刀子…...

用STM32+NRF24L01模拟蓝牙广播,手机能搜到设备了!附完整代码

用STM32NRF24L01模拟蓝牙低功耗广播的实战指南 当我在实验室里第一次看到手机蓝牙搜索列表中出现自己用NRF24L01模块模拟的设备名称时&#xff0c;那种成就感至今难忘。这个看似简单的实验背后&#xff0c;其实隐藏着无线通信协议栈的巧妙设计。本文将带你从零开始&#xff0c;…...

如何利用WinRAR分卷压缩,轻松突破大文件传输限制

1. 为什么需要分卷压缩&#xff1f; 在日常工作和生活中&#xff0c;我们经常会遇到需要传输大文件的情况。比如设计师要发送PSD源文件给客户&#xff0c;程序员要分享开发环境的镜像&#xff0c;或者普通用户想通过邮件发送高清视频给亲友。但几乎所有主流传输平台都对单个文件…...

【20年架构老兵亲授】:SITS 2026服务边界定义三原则、8类AI上下文耦合陷阱及动态治理沙盒实测数据

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生微服务架构&#xff1a;SITS 2026服务拆分与治理策略 AI原生微服务并非传统微服务的简单升级&#xff0c;而是以模型生命周期、推理上下文感知和实时反馈闭环为驱动的服务边界重构。SITS 2026&am…...

【SITS 2026 K8s for ML合规框架】:通过CNCF AI WG审核的3层资源隔离模型(含YAML模板+准入控制器配置)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生Kubernetes编排&#xff1a;SITS 2026 K8s for ML工作负载 SITS 2026 引入了专为机器学习工作负载深度优化的 AI-native Kubernetes 编排层&#xff0c;突破传统 K8s 在资源弹性、拓扑感知与训练…...

工作5年的Go程序员,转大模型开发3个月,我踩过的所有坑

文章目录前言一、第一个大坑&#xff1a;以为大模型就是调API&#xff0c;结果连面试门都没入二、第二个大坑&#xff1a;技术栈转换&#xff0c;从Go的天堂掉进Python的地狱三、第三个大坑&#xff1a;Go调用大模型推理&#xff0c;踩不完的性能和内存坑四、第四个大坑&#x…...

地表温度反演进阶:对比单窗算法与大气校正法,用ENVI/ERDAS分析Landsat 7 ETM+数据哪个更准?

地表温度反演技术深度对比&#xff1a;单窗算法与大气校正法的实战解析 遥感技术在地表温度反演领域的应用已经发展出多种成熟算法&#xff0c;其中单窗算法和大气校正法&#xff08;RTE&#xff09;是最为常用的两种方法。对于中高级遥感用户而言&#xff0c;理解这两种算法的…...

AI编程提效:用系统提示词实现测试驱动开发与可靠交付

1. 项目概述&#xff1a;一个为AI编程工作流设计的“系统指令集”如果你经常用Claude、Cursor或者ChatGPT来辅助写代码&#xff0c;大概率遇到过这种情况&#xff1a;AI助手给出的代码片段看起来能跑&#xff0c;但一放到项目里就各种报错&#xff1b;或者它自作主张地“优化”…...