vue3之实现响应式数据ref和reactive

news2024/9/23 19:24:35

在这里插入图片描述

用途

ref、reactive都是vue3提供实现响应式数据的方法

ref()

接受一个内部值,返回一个响应式的、可更改的ref对象,此对象只有一个指向其内部的属性.value

ref可以说是简化版的reactive,与reactive的区别则是

ref是对某一个数据类型的单独双向绑定

使用ref在setup读取的时候需要使用.value的形式template中则不需要.调用

function ref<T>(value: T): Ref<UnwrapRef<T>>

interface Ref<T> {
  value: T
}

reactive()

返回一个对象的响应式代理。

参数必须是对象(json/arr)

本质是转成proxy对象

响应式转换是深层的,它会影响到所有嵌套的属性,一个响应式对象也将深层地解包任何ref属性,同时保持响应性。

shallowReactive浅层次的作用形式

const state = shallowReactive({
  foo: 1,
  nested: {
    bar: 2
  }
})

// 更改状态自身的属性是响应式的
state.foo++

// ...但下层嵌套对象不会被转为响应式
isReactive(state.nested) // false

// 不是响应式的
state.nested.bar++

toRefs

将一个响应式对象转换为一个普通对象,这个普通对象的每个属性都是指向源对象相应属性的ref。每个单独的ref都是使用toRef()创建的。

  • 把一个响应式对象转换为普通对象
  • 对普通对象的每一个属性都进行ref操作

toRefs配合reative使用:

当从组合式函数中返回响应式对象时,toRefs 相当有用。使用它,消费者组件可以解构/展开返回的对象而不会失去响应性

reactive对象取出的所有属性值都是非响应式的,而利用toRefs可以将一个响应式reactive对象的所有原始属性转换为响应式的ref属性。

function useFeatureX() {
  const state = reactive({
    foo: 1,
    bar: 2
  })

  // ...基于状态的操作逻辑

  // 在返回时都转为 ref
  return toRefs(state)
}

// 可以解构而不会失去响应性
const { foo, bar } = useFeatureX()

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

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

相关文章

测试工程师面试题

很多软件测试工程师在面试的时候都会遇到考官给的各种各样的面试题&#xff0c;这也反应了测试工程师对企业的重要性&#xff0c;面试通常分为以下几个方面&#xff0c;由于篇幅有限&#xff0c;在这里就只给大家分享一些比较常见的问题。 01 自我介绍 这里我不分享如何自我介…

js 网格卡片交换动画

关键技术&#xff1a;animate(keyframes, options) keyframes 关键帧对象数组&#xff0c;或一个关键帧对象&#xff08;其属性为可迭代值的数组&#xff09; 代表动画持续时间的整数&#xff08;以毫秒为单位&#xff09;&#xff0c;或者一个包含一个或多个时间属性 参考传送…

C# 学习之路(类的基本概念)

C# 学习之路&#xff08;类的基本概念&#xff09; 类的概述 类是一种活动的数据结构 程序的数据和功能被组织为逻辑上相关的数据项和函数封装的集合&#xff0c;并称为类 类包含数据成员和函数成员&#xff1a; 数据成员&#xff1a;存储与类或类的实例相关的数据&#xff08…

Linux条件变量

一、条件变量函数 1&#xff0c;条件变量 条件变量&#xff1a;用来描述某种临界资源是否就绪的一种数据化描述。通常要配合mutex一起使用。 2&#xff0c;初始化 pthread_connd_init: 同样有一个静态的和一个动态的。 其中cond是需要初始化的条件变量&#xff0c;attr传…

在线书法培训迎来新风口

随着社会教育水平的不断提高&#xff0c;书法不再是独属于某个年龄层的爱好&#xff0c;开始被越来越多人欣赏和重视。 写一手好字&#xff0c;对每一个人来说都是一个加分“外挂”。在考场上&#xff0c;一手好字无疑可以让阅卷老师在心中自然加分&#xff1b;在职场中&#…

源码深度解析之 Spring IOC

1. 基础知识 1.1 什么是 Spring IOC &#xff1f; IOC 不是一种技术&#xff0c;只是一种思想&#xff0c;一个重要的面向对象编程的法则&#xff0c;它能指导我们如何设计出松耦合、更优良的程序。 传统应用程序都是由我们在类内部主动创建依赖对象&#xff0c;从而导致类与…

Vue--》自定义指令的使用讲解

目录 自定义指令 自定义指令的分类 私有自定义指令&#xff1a; 全局自定义指令&#xff1a; 总结 自定义指令 vue官方提供了v-text、v-for、v-model、v-if等常用的指令&#xff0c;还允许开发者自定义指令。 自定义指令的分类 私有自定义指令&#xff1a; 在每个vue组…

[附源码]计算机毕业设计框架的食品安全监督平台的设计与实现Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

u-BOOT启动流程

1、u-boot入口&#xff1a;入口即第一行程序&#xff0c;程序的链接是由链接脚本决定的&#xff0c;编译uboot之后&#xff0c;可以在根目录下生成u-boot.lds文件 打开lds文件可以看到代码当前入口点&#xff1a; &#xff1a;_start&#xff0c;_start后面就是中断向量表&…

[附源码]Python计算机毕业设计Django演唱会门票售卖系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

股票接口怎样获取数据方便?

目前很多交易者对股票数据行情查询相关使用的系统也是很普遍&#xff0c;就比如说你查询A股的大秦铁路可以使用实时股票数据接口来获取它的实时股价&#xff0c;成交量&#xff0c;成交金额等情况。那么在这个过程中&#xff0c;股票接口是如何获取数据更方便呢&#xff1f;小编…

化工厂人员定位系统:聚焦化工安全问题,提升智慧管理水平

化工厂人员定位系统&#xff0c;以人员定位技术为核心&#xff0c;整合访客管理、出入口控制、地图、人脸识别、视频监控数据采集等各种管控技术&#xff0c;提供精准实时定位、轨迹查询、货物跟踪等功能&#xff0c;又称“智能化二道门人员管理系统”。 12月1日&#xff0c;鞍…

[附源码]计算机毕业设计剧本杀交流分享平台Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Spring进阶(二十一)之循环Bean详解

目录 什么是循环依赖 检测是否存在循环依赖 Spring底层是如何解决循环依赖的问题 循环依赖无法解决的情况 为什么需要用3级缓存 问题 原因 案例 单例bean解决了循环依赖&#xff0c;还存在什么问题 什么是循环依赖 这个很好理解&#xff0c;多个bean之间相互依赖&#…

Python制作进度条,原来有这么多方法

如果你之前没用过进度条&#xff0c;八成是觉得它会增加不必要的复杂性或者很难维护&#xff0c;其实不然。要加一个进度条其实只需要几行代码。 在这几行代码中&#xff0c;我们可以看看如何在命令行脚本以及 PySimpleGUI UI 中添加进度条。 下文将介绍 4 个常用的 Python 进度…

TL431介绍及其应用电路

TL431介绍及其应用电路 硬件攻城狮 1. TL431简介 TL431是常用的三端并联稳压器&#xff0c;具有较好的热稳定性&#xff0c;输出电压可以设置为Vref~36V之间的任何值。被广泛用作基准源、比较器、运放等功能。在隔离电源中&#xff0c;TL431经常与光耦配合构成隔离反馈回路&…

PDF文件怎么合并?看完这篇就懂了!

不知道小伙伴们有没有这样的经历&#xff0c;那就是准备好一些pdf去打印店打印的时候&#xff0c;本来想要打印双面的&#xff0c;但是店家却表示pdf太小&#xff0c;只能一页一页的单页打印。这就给我们的钱包无形之中增加了很多的负担&#xff0c;因为有时候我们没必要打印单…

搜索与图论-有向图的拓扑序列

文章目录一、有向图的拓扑序列1. 拓扑序列2. 拓扑排序3. 如何进行拓扑排序4. 拓扑排序具体实现详见例题有向图的拓扑序列二、有向图的拓扑序列例题——有向图的拓扑序列具体实现1. 样例演示2. 实现思路3. 代码注解4. 实现代码一、有向图的拓扑序列 有向图的拓扑序列就是图的广…

遥感测深方法综述(二)CZMIL 机载LiDAR 测深系统

机载激光雷达测深测量是集激光测距、GNSS定位/姿态测量、航空摄影等多种技术于一体的新型主动机载激光测绘&#xff0c;可应用于海滩和海岸线、浅海编图、海岛、岛礁、水下障碍物的调查&#xff0c;是高效获取高精度近岸海底地形的重要技术&#xff0c;尤其对“人下不去、船上不…

31_ADC基本原理及单次采集实验

目录 ADC简介 STM32F10x ADC特点 ADC执行模式 相关寄存器及数据对齐方式 ADC的采样时间 常用库函数 单次转换一般步骤 实验源码 ADC简介 Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。…