reactive

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

reactive 源码约束了我们的类型

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

import { reactive} from 'vue'let person = reactive('sad')

绑定普通的数据类型 我们可以 使用昨天讲到ref

你如果用ref去绑定对象 或者 数组 等复杂的数据类型 我们看源码里面其实也是 去调用reactive

使用reactive 去修改值无须.value

reactive 基础用法

import { reactive } from 'vue'
let person = reactive({name:"小满"
})
person.name = "大满"

数组异步赋值问题

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

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

解决方案1

使用push

import { reactive } from 'vue'
let person = reactive<number[]>([])
setTimeout(() => {const arr = [1, 2, 3]person.push(...arr)console.log(person);},1000)

方案2

包裹一层对象

type Person = {list?:Array<number>
}
let person = reactive<Person>({list:[]
})
setTimeout(() => {const arr = [1, 2, 3]person.list = arr;console.log(person);},1000)

readonly

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

import { reactive ,readonly} from 'vue'
const person = reactive({count:1})
const copy = readonly(person)//person.count++copy.count++

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.first.b = 8state.first.second.c = 9console.log(state);
}</script> <style>
</style>

学习Vue3 第七章(认识Reactive全家桶)相关推荐

  1. 《SysML精粹》学习记录--第七章

    <SysML精粹>学习记录 第七章:序列图 序列图简介 序列图元素 消息 约束 组合片段 交互使用 小结 第七章:序列图 序列图简介   序列图是另一种可以用来说明系统动态行为信息的Sys ...

  2. Effective C++ 学习笔记 第七章:模板与泛型编程

    第一章见 Effective C++ 学习笔记 第一章:让自己习惯 C++ 第二章见 Effective C++ 学习笔记 第二章:构造.析构.赋值运算 第三章见 Effective C++ 学习笔记 ...

  3. 《Go语言圣经》学习笔记 第七章 接口

    <Go语言圣经>学习笔记 第七章 接口 目录 接口是合约 接口类型 实现接口的条件 flag.Value接口 接口值 sort.Interface接口 http.Handle接口 erro ...

  4. 学习Vue3 第六章(认识Ref全家桶)

    视频教程小满Vue3(第六章 Ref 全家桶 & 源码解析)_哔哩哔哩_bilibili ref 接受一个内部值并返回一个响应式且可变的 ref 对象.ref 对象仅有一个 .value pr ...

  5. Android 渗透测试学习手册 第七章 不太知名的 Android 漏洞

    第七章 不太知名的 Android 漏洞 作者:Aditya Gupta 译者:飞龙 协议:CC BY-NC-SA 4.0 在本章中,我们将了解一些不太知名的 Android 攻击向量,这在 Andr ...

  6. 吴恩达机器学习学习笔记第七章:逻辑回归

    分类Classification分为正类和负类 (规定谁是正谁是负无所谓) 吴恩达老师举例几个例子:判断邮箱是否是垃圾邮箱 一个在线交易是否是诈骗 一个肿瘤是良性的还是恶性 如果我们用之前学习的lin ...

  7. 广义相对论-学习记录16-第七章-史瓦西解与粒子运动1

    第七章:史瓦西解与粒子运动   史瓦西解是真空解:Rμν=0R_{\mu\nu}=0Rμν​=0,并且具有下述两个条件:   (1)引力源是球对称的,即gμνg_{\mu\nu}gμν​中只能含有下述 ...

  8. 【机器学习-周志华】学习笔记-第七章

    记录第一遍没看懂的 记录觉得有用的 其他章节:         第一章         第三章         第五章         第六章         第七章         第八章      ...

  9. DSP原理学习笔记--第七章--增强直接存储器访问(EDMA)

    第七章 增强直接存储器访问(EDMA) 第七章 增强直接存储器访问(EDMA) DMA 数据传输 EDMA的特点 EDMA控制器的结构 EDMA传输中的术语 EDMA传输方式 同步事件 EDMA通道与 ...

  10. java学习笔记-第七章:面向对象编程(基础部分)

    第七章:面向对象编程(基础部分) 总体内容 类与对象 引出类与对象 类与对象概述 类与对象的关系示意图 属性概念及其细节 类与对象快速入门案例 对象内存布局 类与对象内存分配机制 引申:java内存的 ...

最新文章

  1. struts tags 学习
  2. 一个Java递归删除目录的方法
  3. 初学计算几何(四)——初识凸包
  4. BZOJ 3694DTOJ 1972: 最短路
  5. Python中带下划线_的变量和函数命名的用法
  6. Fiddler + 夜神模拟器 APP接口调试
  7. [洛谷2357] 守墓人
  8. nginx 启动失败
  9. Java核心技术读书笔记(2013-01-11)
  10. JavaScript编程用法——JavaScript运行环境
  11. w10 计算机配置管理模板,win10老是配置更新,设置这个,让你无处可更...
  12. SpringBoot分布式项目实现Session共享
  13. ftp连接服务器失败:响应:220-FileZilla Server version 0.9.24 beta 响应:220-written by Tim Kosse (Tim.Kosse@gmx.d
  14. 视频存储网站服务器配置,视频存储服务器配置
  15. 计算机云计算服务外包,云计算上的三类外包计算
  16. Liferay Portal CVE-2020-7961
  17. Delphi中的线程类--之(2)
  18. python常用re正则表达式大全,查找指定内容
  19. 不可不知的银行业务知识-整理版
  20. jquery-ui如何引入

热门文章

  1. QT报错 error: [debug/qrc_image.cpp] Error 1
  2. 苹果开发者帐号申请流程
  3. 微信小程序实现路线规划demo
  4. 从0开始的appium+Android+python自动抢红包世界生活
  5. 一个字的伤感网名又是一个伤感的故事
  6. TPO Official 01 Speaking
  7. 连接防火墙/路由器的几种方式
  8. DSP TMS320C6455 芯片支持库CSL API参考
  9. java代码实现的帧动画
  10. 使用c++实现各种进制之间的转换