学习Vue3 - 认识 Reactive 全家桶

news2025/7/13 1:37:06

reactive

用来绑定复杂的数据类型,例如:对象、数组

reactive 源码约束了我们的类型

他是不可以绑定普通的数据类型的,这样是不允许的,会报错

因此,如果绑定普通的数据类型,可以使用ref

ref绑定对象或者数组等复杂的数据类型,源码里面其实也是调用 reactive 实现的

使用reactive 去修改值,无需使用 .value

reactive 基础用法

import { reactive } from 'vue';

const person = reactive({ name: '测试' })

person.name = '变变'

数组异步赋值问题

这样赋值页面使不会变化的,因为会脱离响应式

import { reactive } from 'vue';

let person = reactive<number[]>([])
setTimeout(() => {
  person = [1, 2, 3]
  console.log(person)
}, 2000);

解决方案1

使用push

import { reactive } from 'vue';

let person = reactive<number[]>([])
setTimeout(() => {
  person.push(...[1, 2, 3])  
  console.log(person)
}, 2000);

解决方案2

包裹一层对象

import { reactive } from 'vue';

type Person = {
  list?: Array<number>
}

let person = reactive<Person>({
  list: []
})

setTimeout(() => {
  const arr = [1, 2, 3]
  person.list = arr
  console.log(person)
}, 2000);

readonly

拷贝proxy对象,将其设置为只读

shallowReactive 

只能对浅层的数据,如果是深层的数据只会改变值,不会更新视图

注意:如果shallowReactive 之前 有reactive数据更新,会受影响,视图会更新

例1  单独使用,不受影响

<template>
 <div>
  <div>{{state}}</div>
  <button @click="change1">test1</button>
  <button @click="change2">test2</button>
 </div>
</template>
<script setup lang="ts" >
import { shallowReactive } from 'vue'

const obj = {
  a: 1,
  first: {
    b: 2,
    second: {
      c: 3,
    },
  },
}

const state = shallowReactive(obj)
function change1() {
  state.a = 7
}
function change2() {
  state.first.b = 8
  state.first.second.c = 9
  console.log(state)
}
</script>

例2 在reactive之后调用或者世界在.vaue级别调用,会影响其后面的shallowReactive,界面数据会被更新掉

<template>
 <div>
  <div>{{state}}</div>
  <button @click="change1">test1</button>
  <button @click="change2">test2</button>
 </div>
</template>
<script setup lang="ts" >
import { shallowReactive } from 'vue'

const obj = {
  a: 1,
  first: {
    b: 2,
    second: {
      c: 3,
    },
  },
}

const state = shallowReactive(obj)
function change1() {
  state.a = 7
}
function change2() {
  state.a = 8
  state.first.second.c = 9
  console.log(state)
}
</script>

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

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

相关文章

计算机SCI论文,如何写吸引人的摘要? - 易智编译EaseEditing

摘要简明扼要的概括全文的主要内容&#xff0c;是整篇文章的精华&#xff0c;是编辑、审稿专家以及读者阅读文章的最先关注的部分。 一个好的摘要可以正确反映文章内容&#xff0c;引起编辑、审稿专家以及读者的关注。那如何写出一个好的论文摘要呢&#xff0c;今天小易为大家…

一种基于摩斯密码的页面加密方法(web和小程序)

1. 开始 web开发中&#xff0c;常有一些功能仅希望对开发、测试人员等一小部分人展示&#xff0c;比如测试一个小程序项目中&#xff0c;想让测试人员快速复制当前对应的h5页面&#xff0c;这时候如果页面是必须登录的&#xff0c;我们可以借助vconsole&#xff0c;然后维护一…

redis之主从切换可能有哪些问题

写在前面 本文一起看下Redis cluster 集群模式下&#xff0c;发生了主从切换时可能存在的问题以及应对方案。 1&#xff1a;主从数据不一致 主从数据不一致&#xff0c;是由于主从同步延迟造成的&#xff0c;可能的解决方案如下&#xff1a; 1&#xff1a;尽量将主从同机房…

React面试:谈谈虚拟DOM,Diff算法与Key机制

1.虚拟dom 原生的JS DOM操作非常消耗性能&#xff0c;而React把真实原生JS DOM转换成了JavaScript对象。这就是虚拟Dom&#xff08;Virtual Dom&#xff09; 每次数据更新后&#xff0c;重新计算虚拟Dom&#xff0c;并和上一次生成的虚拟dom进行对比&#xff0c;对发生变化的…

Ansys Zemax | 用于数字投影光学中均匀照明的蝇眼阵列

简介 在数字投影仪设计中&#xff0c;我们希望确保数字光源与投影图像在辐照度分布相匹配。因此&#xff0c;这一约束要求投影仪设计包含均匀照明的空间光调制器——通常以LCD面板的形式呈现。理论上听起来很容易&#xff0c;但实际上&#xff0c;此面板上的光源光束通常是高斯…

语音输入转文字怎么操作?分享几种语音转文字技巧

相信有不少小伙伴在整理语音文件的时候&#xff0c;都会有过怎样把这些语音直接转换成文字的想法吧。每次在我开完会之后&#xff0c;需要对会议语音进行整理时&#xff0c;都会产生这种想法。因为我们需要不断的去听这个会议的语音内容&#xff0c;这样做既费时又费力。但其实…

MATLAB生成2D和3D格网(GUI程序)

目录 一、写函数DataStructure_Fnc 二、控件属性 三、生成2D格网代码 三、生成3D格网代码 一、写函数DataStructure_Fnc 函数代码&#xff0c;生成三角网需要调用此函数 function DataStructureDataStructure_Fnc(Table) [row col]size(Table); Table(1:end,5:7)-1; for j1…

【配置指导】如何配置dataFEED edgeConnector Siemens以实现西门子PLC与阿里云之间的双向通信

本配置指导手册介绍了如何配置dataFEED edgeConnector Siemens&#xff0c;以通过MQTT来将西门子S7-1200 PLC数据上传到阿里云&#xff1b;以及从阿里云发布数据&#xff0c;并传输到PLC中&#xff0c;从而实现西门子S7-1200 PLC与阿里云之间的双向通信。 主要内容包括&#xf…

30-Vue之ECharts-直角坐标系的常用配置

直角坐标系的常用配置前言直角坐标系常用配置网格坐标轴区域缩放前言 本篇来学习下直角坐标系的常用配置 直角坐标系 直角坐标系的图表指的是带有x轴和y轴的图表, 常见的直角坐标系的图表有: 柱状图 折线图 散点图 常用配置 网格 grid&#xff1a;是用来控制直角坐标系的…

可落地的、不基于框架的分布式事务解决方案

两阶段提交 2PC 在MySQL InnoDB中&#xff0c;为了保证Bin Log和Redo Log的一致性&#xff0c;便采用了两阶段提交&#xff1b;ZooKeeper、ETCD集群为了保证数据一致性&#xff0c;也采用了两阶段提交&#xff0c;RocketMQ的事务消息也采用了两阶段提交&#xff0c;可见两阶段…

从VirtualBox换成KVM虚拟机管理程序?

好消息是&#xff0c;您可以轻松地将VDI格式的VirtualBox VM迁移到qcow2(即KVM的磁盘映像格式)&#xff0c;不用创建新的KVM来宾计算机。 我们在本文中将概述如何将VirtualBox VM迁移到Linux中KVM VM的逐步过程。 第一步&#xff1a;列出现有的VirtualBox映像 首先&#xff0c…

泰斯公式Thiem’s equation地下水

基本形式 泰斯公式1描述了在含水层抽水时的地下水流动。 多井作业时非承压含水层的方程形式如下 H(s)和H0(s)分别表示s点的估计地下水位和初始地下水位&#xff0c;K表示水力导率&#xff0c;ri表示预测位置与贡献井i之间的距离&#xff0c;n是贡献井的集合&#xff0c;Q表…

Win11 21H2 12月最新更新了哪些内容?

微软今天发布了12月最新的累积更新补丁&#xff0c;用户可以升级KB5021234将版本号提升至 build 22000.1335&#xff0c;并解决了远程网络问题以及可能影响数据保护应用程序编程接口 &#xff08;DPAPI&#xff09; 解密的问题。此外&#xff0c;该更新还包括之前在 11 月 15 日…

11-FreeRTOS配置函数 FreeRTOSConfig.h

1-FreeRTOSConfig.h介绍 FreeRTOS中的相关定义多数都在FreeRTOSConfig.h中&#xff0c;整个FreeRTOS的定义调用都可以在这里定义&#xff0c;当然你也可以自己命名一个文件实现自定义。 下面是这个文件的内容&#xff0c;如下&#xff1a; #ifndef FREERTOS_CONFIG_H #define…

Graph Neural Networks for Social Recommendation学习笔记

1 目标 学习user embedding和item embedding。 2 框架 3 用户建模 3.1 利用历史记录对用户建模 3.2 利用社交关系对用户建模

10.9.1-Dataway+Echarts动态图表方案

文章目录1. 技术选型2. 实现方案2.1. 方案介绍2.2. 方案实现&#xff08;demo&#xff09;2.2.1. 使用echarts绘制html静态页2.2.1.1. 选择合适的图表2.2.1.2. 下载html demo2.2.2. 使用Dataway准备数据接口2.2.2.1. 部署dataway2.2.2.2. 创建数据接口2.2.3. 调试html demo da…

代码随想录算法训练营第七天| 哈希表理论基础 ,454.四数相加II, 383. 赎金信, 15. 三数之和, 18. 四数之和

代码随想录算法训练营第七天| 哈希表理论基础 &#xff0c;454.四数相加II&#xff0c; 383. 赎金信&#xff0c; 15. 三数之和&#xff0c; 18. 四数之和 454.四数相加II 建议&#xff1a;本题是 使用map 巧妙解决的问题&#xff0c;好好体会一下 哈希法 如何提高程序执行效…

【洞察人性】 理解行为背后的动机

《洞察人性》 关于作者 阿尔弗雷德•阿德勒&#xff0c;奥地利精神病学家&#xff0c; 人本主义心理学先驱&#xff0c;曾经在美国哥伦比亚大学任客座教授。同时他也是个体心理学的创始人&#xff0c;在学术界拥有重要的地位。著作有《自卑与超越》《人性的研究》 《洞察人性…

DPDK源码分析之rte_eal_init

EAL是什么 环境抽象层(EAL)负责获得对底层资源(如硬件和内存空间)的访问。对于应用程序和其他库来说&#xff0c;使用这个通用接口可以不用关系具体操作系统的环境细节。rte_eal_init初始化例程负责决定如何分配操作系统的这些资源(即内存空间、设备、定时器、控制台等等)。 …

【IVIF:搜索架构】

Searching a Hierarchically Aggregated Fusion Architecture for Fast Multi-Modality Image Fusion &#xff08;搜索用于快速多模态图像融合的分层聚合融合架构&#xff09; 现有的基于CNN的方法使主要点在于设计各种体系结构&#xff0c;以端到端的方式实现这些任务。但是…