与Reactive相关可用的包括reactive、shallowReactive,reactive API可以响应式更新视图,shallowReactive浅层更新视图。外加readonly API

Reactive

从vue导出,用reative包裹对象{name:大漂亮}

<template><div>{{person.name}}</div>
</template><script setup lang='ts'>
// <!-- rective 不可以绑定普通类型 -->
import {reactive} from 'vue'
let person=reactive({name:'大漂亮'
})
person.name="小漂亮"
</script>

shallowReactive

视图上只更新浅层的,但是数据会更新

例1
<template><div v-for="index in person"><div>{{index}}</div></div><button @click="add">数组加一</button>
</template>
import { shallowReactive } from 'vue'
let person=shallowReactive<number[]>([])
const arr=[1,2,3];
person.push(...arr);
function add(){console.log(person);for(let i=0;i<person.length;i++){console.log(person[i]++)}
}

结果:点击button,person数组里面的值会加一,视图会同步更新

例2
<template><div><div>{{ state }}</div><button @click="change1">test1</button><button @click="change2">test2</button></div></template>
<script setup lang='ts'>
// <!-- rective 不可以绑定普通类型 -->
import {reactive} from 'vue'
//只能对浅层的数据 如果是深层的数据只会改变值 不会改变视图
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>

结果:
页面原始显示
{ “a”: 1, “first”: { “b”: 2, “second”: { “c”: 3 } } }
点击text1视图结果为:
{ “a”: 7, “first”: { “b”: 2, “second”: { “c”: 3 } } }
点击text2视图结果为
{ “a”: 7, “first”: { “b”: 2, “second”: { “c”: 3 } } }
控制台输出为:
{
“a”: 7,
“first”: {
“b”: 8,
“second”: {
“c”: 9
}
}
}
由此可见,使用shallowReactive深层次数据会更新,但不会更新到视图上。
如果将代码改为

<script>
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>

点击test1视图结果为{ “a”: 7, “first”: { “b”: 2, “second”: { “c”: 3 } } }
点击test2视图结果为{ “a”: 7, “first”: { “b”: 8, “second”: { “c”: 9 } } }
由此可见,reactive会将视图全部更新。

readonly使用示例

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

是能显示到视图上,不能做更改。

Reactive的使用(reactive 和 shallowReactive使用上区别)相关推荐

  1. ref、 reactive、toref、torefs的用法,区别

    ref. reactive.toref.torefs的用法,区别 ref 接受一个内部值并返回一个响应式且可变的 ref 对象.ref 对象仅有一个 .value property,指向该内部值 co ...

  2. 如何从使用环境上区别光纤收发器?

    根据针对不同环境,就需求不同性质产品.光纤收发器也一样有工业级和商业级之分,但是又区别于市场上TP-LINGK和D-link等(这些是家庭使用的3C电子产品很低端,大部分是回收二手货元器件生产,客户群 ...

  3. mysql55和57的区别_技术分享 | MySQL:count(*)、count(字段) 实现上区别

    我们继续来讨论一下 count(*).count(字段)实现上的区别.注意我们这里都使用 Innodb 做为存储引擎,不讨论其他引擎.因为了有了前面的讨论,更容易看出它们的区别,这里我们有如下注意点: ...

  4. MySQL:count(*) count(字段) 实现上区别

    继上一篇文章: https://www.jianshu.com/p/ce063e2024ad MySQL:查询字段数量多少对查询效率的影响 我们继续来讨论一下count(*) count(字段) 实现 ...

  5. background-color和bgColor和color用法上区别

    bgcolor只是标签属性,而backgroud更多作为css的样式属性. bgcolor 属性是过时的 HTML 属性,  css background-color 就是取代它的. 例如: < ...

  6. background-color和bgColor用法上区别

    background-color属于css样式表里面的所以这样写style="background-color:背景颜色" bgColor属于HTML里面的所以这样写bgColor ...

  7. 干货 | Reactive模式在Trip.com消息推送平台上的实践

    作者简介 KevinTen,携程后端开发工程师,关注Reactive和RPC领域,深度参与开源社区,对Reactive技术有浓厚兴趣. Pin,携程技术专家,Apache Dubbo贡献者,关注RPC ...

  8. 【Vue3】李南江老师讲解--个人笔记(二)ref 和 reactive详解

    [vue3笔记之 ref 和 reactive ] 实现响应式数据的方法 可以使用 ref,reactive定义响应式数据,本质上就是将传入的数据包装成一个Proxy对象. 使用 reactive 必 ...

  9. Reactive Streams规范及常见库

    一.什么是Reactive Streams Reactive Streams is an initiative to provide a standard for asynchronous strea ...

最新文章

  1. Net Framework 2.0 MSI returned error code 1603解决方法
  2. 关于iOS知识的提升
  3. 解读Redis报错:“MISCONF Redis is configured to save RDB snapshots”
  4. MySQL(七)联结表
  5. 不同文件类型输出及ContentType表
  6. 资金时间价值的计算机应用视频讲解,第八章资金时间价值与方案经济比选20161018讲解.ppt...
  7. 浅析Kubernetes Pod重启策略和健康检查
  8. vmware下安装rhel5
  9. 手把手带你入坑迁移学习(by 当过黑客的CTO大叔)
  10. js获取验证码倒计时60s(超简单)
  11. 解决 github clone慢
  12. 苹果python执行不了,Python调用的AppleScript不使用osascript或appscript?
  13. hadoop工作原理
  14. iOS苹果开发者账号(公司账号)申请流程详解
  15. arcgis地理空间数据库学习记录05-管理分布式数据库
  16. autoware planning trajectory_smoother 模块解读
  17. 屏蔽ctrl/shift + R/F5
  18. 荟研新材料 毕克BYK420 水性涂料和颜料浓缩浆用液态流变助剂 抗流挂剂
  19. linux configure 的 --prefix 参数的作用
  20. 大数据和java的区别

热门文章

  1. Microsoft TODO快捷键
  2. 电路实验一阶电路误差分析_常见滤波电路分析技巧
  3. cuteftp.exe
  4. 定时器concurrent属性简单介绍
  5. Speedoffice(PPT)如何设置幻灯片大小
  6. CTP常见问题系列之一 “CTP : 不合法的登录“
  7. 用Java写一个集合竞价抓涨停的策略
  8. 微软自带dns服务器,微软改进Windows 10加密DNS服务器配置(DoH) 现在设置起来更方便...
  9. Android+webService的连接
  10. 前向差分、后向差分和中心差分误差分析