Vue3 响应式 reactive全家桶

reactive()与ref()的区别和连续

ref和reactive都是把变量变成响应式对象

reactive底层使用了泛型约束,只能对引用类型使用。

而ref支持所有的类型,ref取值和赋值都需要 .value

而reactive 不需要

对象

<template><div><form><input type="text" v-model="form.name"><p>{{form.name}}</p><br><input type="text" v-model="form.age"><p>{{form.age}}</p></div>
</template><script setup lang='ts'>
import { reactive, readonly, shallowReactive } from 'vue'type M = {name: string,age: number
}// 对象
let form = reactive<M>({name: 'cc',age: '22'
})</script>
<style scoped></style>

数组

<template><div><form><ul><!-- <li v-for="item in list">{{ item }}</li> --><li v-for="item in list.arr">{{ item }}</li></ul><br><button @click.prevent="add">添加</button></form></div>
</template><script setup lang='ts'>
import { reactive, readonly, shallowReactive } from 'vue'// 数组
let list = reactive<number[]>([])
const add = () => {list.push(1)console.log(list);
}// const add = () => {
//   setTimeout(() => {
//     let res = ["1", '2', '3']
//     // list = res as any
//     // console.log(list);
//     // 数组是有值的
//     // 页面是没有变化的
//     // 因为reactiv是 proxy代理的对象
//     // 直接赋值会把proxy代理做一个覆盖
//     // 不能直接赋值
//     // reactive proxy 不能直接赋值 否则破坏响应式对象
//   }, 2000);
// }
]]
</script>

reactive是proxy代理的对象,直接赋值会把proxy代理做一个覆盖,不能直接取值

解决方案
1.修改数据结构
 let list = reactive<number[]>([])// 解构
const add = () =>{setTimeout(() => {let res = ["1", '2', '3']// 1.数组可以使用push + 解构list.push(...res)console.log(list);// 这时候页面上就会渲染,proxy对象不会被破坏}, 2000);
}

解构获取值res

2.添加一个对象,把数组作为一个属性去解决
let list = reactive<{arr: string[]
}>({arr: []
})
const add = () => {setTimeout(() => {let res = ["1", "2", "3"]list.arr = res}, 2000);
}

readonly

readonly的作用是把reactive对象的所有属性都变成只读的

shaowReactive

<template><div><div>{{ obj2 }}</div><button @click="edit">修改值</button><div>{{ obj3 }}</div><button @click="edit2">修改值</button></div>
</template><script setup lang='ts'>
import { reactive, readonly, shallowReactive } from 'vue'
const obj2 = shallowReactive({foo: {bar: {a: 1}}
})const edit = () => {obj2.foo.bar.a = 2
}const obj3 = reactive({foo: {bar: {a: 1}}
})
const edit2 = () => {obj3.foo.bar.a = 2
}
</script>
<style scoped></style>

这样只会改变reactive的值

shallowReactive的值只会改变第一层的值

而reactive会找到最后一层

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

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

相关文章

【运维】在 Docker 容器中指定 UTF-8 编码:方法与技巧

在 Docker 容器中指定 UTF-8 编码&#xff1a;方法与技巧 在日常开发中&#xff0c;我们常常需要确保应用程序能正确处理各种字符编码&#xff0c;尤其是 UTF-8 编码。在 Docker 容器中运行应用程序时&#xff0c;正确设置字符编码尤为重要&#xff0c;因为容器通常是跨平台、…

达梦(DM8)数据库表空间的备份与还原(联机备份) 四

一、表空间的备份 1、备份表空间的命令操作 backup tablespace main backupset /home/dmdba/dmdata/DAMENG/bak/full_back_01 ; 2、检查表空间的备份文件 select sf_bakset_check(disk,/home/dmdba/dmdata/DAMENG/bak/full_back_01); 二、表空间的还原 1、修改表空间位脱机…

AI播客下载:Edge of AI (AI最新应用场景和发展趋势)

Edge of AI Podcast 是一个探讨人工智能&#xff08;AI&#xff09;最新应用和发展的播客。该播客由Ron Levy主持&#xff0c;他于2023年8月9日接任新主持人。每个节目都会邀请专家分享他们在AI领域的见解和经验&#xff0c;探索最新的应用场景和发展趋势。例如&#xff0c;在第…

PointCloudLib 法线微分算法(Don)分割点云 C++版本

0.实现效果 原始点云 不同尺度上计算法向量 计算出don特征量,并以颜色显示在点云上 可以看出平面中心的点 不涉及到周围点变化的点 特征量比较低,以红色表示 边缘过渡剧烈的点,特征量比较高,以蓝色表示 以Don算法特征量来作为阈值分割点云,可以分割出剧烈变化的点云 欧…

《Linux Vim急救手册:E138错误全攻略与故障排除秘籍》

标题&#xff1a;《Linux Vim急救手册&#xff1a;E138错误全攻略与故障排除秘籍》 引言 在Linux世界中&#xff0c;Vim是编辑器的瑞士军刀&#xff0c;以其轻量级、强大和灵活著称。然而&#xff0c;即使是最熟练的Vim用户也可能遇到令人头疼的E138错误。本文将深入探讨Vim …

国标GB28181视频汇聚平台EasyCVR设备展示数量和显示条数不符的原因排查与解决

国标GB28181/GA/T1400协议/安防综合管理系统EasyCVR视频汇聚平台能在复杂的网络环境中&#xff0c;将前端设备统一集中接入与汇聚管理。智慧安防/视频存储/视频监控/视频汇聚EasyCVR平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级…

WDF驱动开发-特定于KMDF的技术(三)

支持特殊文件 特殊文件 包括分页文件、转储文件和休眠文件。 如果驱动程序的目标设备是系统可能用于这些文件的存储设备&#xff0c;则驱动程序必须执行以下操作&#xff1a; 调用 WdfDeviceSetSpecialFileSupport 以启用或禁用对每种类型的特殊文件的支持。 默认情况下禁用每…

Django教程(002):模板语法的使用

目录 1 字符串2 列表3 字典4 列表中是字典5 if语句6 案例&#xff1a;使用爬虫爬取联通新闻并在页面渲染 模板语法本质上&#xff1a;在HTML中写一些占位符&#xff0c;由数据对这些占位符进行替换和处理。模板语法主要是方便对方法返回的数据在前端进行渲染&#xff0c;这些数…

什么野指针(c++)

野指针定义 野指针&#xff08;Wild Pointer&#xff09;是指向不确定位置或者非法地址的指针。当一个指针指向的内存被释放后&#xff0c;如果没有将其设置为NULL&#xff0c;那么这个指针就变成了野指针。使用野指针会导致未定义行为&#xff0c;可能引发程序崩溃或数据损坏…

【Proteus仿真】【Arduino单片机】寻迹避障蓝牙遥控小车

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使LCD1602液晶&#xff0c;L298电机&#xff0c;直流电机&#xff0c;HC05/06蓝牙模块&#xff0c;HCSR04超声波&#xff0c;红外寻迹模块等。 主…

grafana Not saving new dashboard due to restricted database access

报错 grafana 容器日志报错 logger=provisioning.dashboard t=2024-06-21T07:40:54.307719612Z level=warn msg="dashboards provisioning provider has no database write permissions because of duplicates" provider=default orgId=1

数据结构与算法-【算法专项】Hash算法-2(HashMap+设计Hash+Hash应用+Hashmap常用方法)

数据结构与算法-Hash算法-2 5 HashMap&#xff08;又双叒叕提到红黑树动态扩容&#xff09;6 如何设计Hash7 Hash的应用8 HashMap源码&#xff08;又双叒叕&#xff09;构造方法&#xff1a;put方法&#xff1a;get方法&#xff1a;equals方法&#xff1a;containsKey方法&…

C++初学者指南-2.输入和输出---命令行参数

C初学者指南-2.输入和输出—命令行参数 文章目录 C初学者指南-2.输入和输出---命令行参数1.这是什么&为什么这样&#xff1f;2.如何在C中访问3.转换为std::string、int......4.字符串到数字的转换函数5.命令行参数解析库 1.这是什么&为什么这样&#xff1f; 程序调用后…

说说 SSL 的错误认识和不足之处

最近明月在学习折腾 LNMP 期间无意中建了一个 Typecho 的博客小站&#xff0c;近一周的折腾下来&#xff0c;收获真的不少&#xff0c;致使兴趣也越来越浓了&#xff0c;在升级 LNMP 的时候捎带手的给这个 Typecho 博客也启用了 SSL。并且开启了 memcached 和 OPcache 优化加速…

C++在VS2022开发Windows窗口程序1:第一个win窗口程序

Windows操作系统是由微软公司开发和维护的一系列图形化操作系统的统称。Windows操作系统主要用于个人计算机、笔记本电脑、平板电脑、服务器等设备上。Windows起源于Microsoft-DOS模拟环境&#xff0c;相比于DOS的指令化模式&#xff0c;Windows采用图形化的模式&#xff0c;因…

OkHttp框架源码深度剖析【Android热门框架分析第一弹】

OkHttp介绍 OkHttp是当下Android使用最频繁的网络请求框架&#xff0c;由Square公司开源。Google在Android4.4以后开始将源码中的HttpURLConnection底层实现替换为OKHttp&#xff0c;同时现在流行的Retrofit框架底层同样是使用OKHttp的。 源码传送门 优点: 支持Http1、Http…

[保姆级教程]uniapp设置字体引入字体格式

文章目录 在 UniApp 中设置和引入自定义字体&#xff08;如 .ttf、.woff、.woff2 等格式&#xff09;通常涉及几个步骤。 准备字体文件&#xff1a; 首先&#xff0c;你需要有字体文件。这些文件通常以 .ttf、.woff 或 .woff2 格式提供。确保有权使用这些字体&#xff0c;并遵守…

如何在Web开发中创建、删除和修改按钮:实用指南

在Web开发中&#xff0c;创建、删除和修改按钮是常见的用户交互元素&#xff0c;用于管理数据、改变状态或执行特定操作。本篇博客将介绍如何设计和实现这些按钮&#xff0c;以及一些实用的技巧和最佳实践。 创建按钮 创建按钮通常用于添加新数据或执行新操作。在HTML中&…

代码随想录算法训练营第二十八天

题目&#xff1a;134. 加油站 暴力方法 暴力的方法很明显就是O(n^2)的&#xff0c;遍历每一个加油站为起点的情况&#xff0c;模拟一圈。 如果跑了一圈&#xff0c;中途没有断油&#xff0c;而且最后油量大于等于0&#xff0c;说明这个起点是ok的。 暴力的方法思路比较简单…

SCI一区TOP|电鳗觅食优化算法(EEFO)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;W Zhao受到自然界中电鳗群体觅食行为启发&#xff0c;提出了电鳗觅食优化算法&#xff08;Electric Eel Foraging Optimization, EEFO&#xff09;。 2.算法原理 2.1算…