最新要闻
- 世界微速讯:2023年春运收官:40天发送旅客近16亿人次 大涨50%
- 香港2022年暴力罪案同比下降7.9%
- 观天下!探险的好处辩论赛,正方_探险的好处
- 全球播报:AMD RX 7600S游戏本显卡首测:远不如RTX 3060!高端弃疗了
- 世界速讯:10道恋爱送命题灵魂拷问ChatGPT:它的回答让我陷入沉思
- 马斯克向往每周只工作80小时!网友:驴都不敢这么用
- 每日速读!中国内地特供!Intel i5-13490F处理器图赏
- 今日热文:轻薄长续航!小新Air14超极本2023发布:标配13代酷睿+1TB SSD
- 普及1TB 联想小新2023笔记本、一体机价格汇总:最贵才8999元
- 每日资讯:8999元 联想小新Pro 27一体机发布:13代酷睿i9搭配Arc独显
- 环球微头条丨4199元起 小新14/16轻薄本2023发布:酷睿i5-1340P、高配1TB SSD
- 播报:三星Galaxy S23 Ultra发布 老外怒赞:安卓阵营老大
- 热头条丨公积金月汇缴额是什么意思
- 当前热讯:用微信传播盗版电影被查:向两百多人分享《流浪地球2》《满江红》链接
- 新资讯:日本独居雌长臂猿突然产崽!孩子的父亲竟还是自己的“爷爷”
- 环球最新:Lady Gaga《小丑2》剧照首曝:疯狂的小丑女登场!
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
实时焦点:一次学俩Vue&Blazor:1.4基础-响应式数据
(资料图片仅供参考)
一、声明式编程和响应式数据
1、声明式编程
- 逻辑层修改视图层元素属性值的方式有两种,一是命令式,先通过getElementById等方法获取元素对象,然后再修改对象的属性;二是声明式,先将视图层元素的属性值和逻辑层数据绑定,通过修改逻辑层数据,实现视图层元素属性值的自动更新。
- 现代前端开发框架,都采用声明式。
2、响应式数据
- 使用声明式编程的开发框架,需要通过特定的机制通知视图层更新。
- Vue通过Proxy代理机制,劫持读取或修改数据的行为,进而通知使用到数据的UI节点进行更新,被Proxy代理的数据,就称之为响应式数据,在组合式API中,Vue提供了ref和reactive两个API来创建响应式数据。
- 而Blazor中的字段或属性,不需要特殊处理,天然具有响应式特性,其内在机制,暂不清楚。.NET的另一个响应机制MVVM,则是通过事件机制,来通知UI层更新。
二、Vue定义响应式数据的方法
Vue提供reactive和ref两个API来创建响应式数据,只有响应式数据才具有通知更新功能。实际应用中,有几个点需要特别注意:
1、reactive只能用来创建对象类型(如对象、数组、Map、Set),不能创建原始类型(如string、number、boolean等)。而ref可以创建任何类型。
const a = reactive({name:"MC",age:18}) //正确const b = reactive(18) //错误const a = ref({name:"MC",age:18}) //正确const b = ref(18) //正确
2、reactive创建的响应式对象,默认是深层次的,里面嵌套的数据都具有响应式。
const a = reactive({})a.people = {name:"MC",age:18} //增加的people属性也是响应式
3、当使用ref时,值保存在ref对象的value属性上。如果是在逻辑层代码里读取或修改,需要通过访问value属性,如b.value+=2
;如果在视图层模板中读取或修改,会自动解包,不需要.value
//视图层中,自动解包,不需要.value//逻辑层中,需要通过.value来访问 {{a.name}}
<script setup>import {ref} from "vue"const a = ref({name:”MC”,age:18})a.value.name </script>
4、当使用ref创建对象类型时,会调用reactive来创建value属性,类似于这种感觉ref(reactive(value))
。当整体替换value值时,新值仍然是响应式的,而reactive如果整体替换新值,则会失去响应性。
- 在实际应用中,创建对象数组类型时,推荐使用ref,因为ref创建的对象,使用数组的map、filter、reduce等返回新数组的方法时,新数组仍然可以保持响应性。
- 使用模块化开发时,export出来的数据,也应该使用ref,这样在引用这个API时,解构出来的数据仍然具有响应性。
- 官方文档有一句话“为了解决reactive带来的限制,Vue 也提供了一个ref方法来允许我们创建可以使用任何值类型的响应式ref”。创建响应式数据时,除了对象类型,其它类型都请尽量使用ref,虽然.value麻烦点。
//整体替换,a失去响应性const a = reactive({name:”MC”,age:18})a = reactive{name:”Fun”,age:16}//ref可以实现响应式替换,b仍具有响应性const b = ref({name:”MC”,age:18})b.value = {name:”Fun”,age:16} //ref实现响应式解构const obj1 = {foo: ref(1),bar: ref(2)}const {foo,bar} = obj1 //响应式解构//使用ref,即使使用filter等方法,b仍然还是响应式的const b = ref([ {name:”MC1”,age:18}, {name:”MC2”,age:19}, {name:”MC3”,age:20}])b.value = b.value.filter((e)=>{return e.age >18})//上例换成reactive,b失去了响应性const b = reactive([ {name:”MC1”,age:18}, {name:”MC2”,age:19}, {name:”MC3”,age:20}])b = b.filter((e)=>{return e.age >18})
5、Vue的响应式原理
无论是选项式API的date()方法,还是组合式API的ref和reactive,都会将数据包装为Proxy对象。如果熟悉C#的属性,代理机制其实很简单。
//需要被代理的数据const obj = { name:"functionMC", age:18}//当读取或修改数据时,指定代理的行为//当读取数据时,调用get方法; 当修改数据时,调用set方法//参数说明:target-被代理的对象、prop-读取的属性、receiver-代理对象、value-新值const handler = { get(target,prop,receiver){ //通过代理读取属性时,在返回值之前,它会做一个跟踪的操作,标记哪些地方用到了这个数据 //track(),追踪谁用了这个属性...... return target[prop] }, set(target,prop,value,receiver){ target[prop] = value //通过代理修改值之后,做一些其它操作 //trigger(),触发所有使用了该值的位置进行更新 }};//为数据obj,创建一个代理对象proxy//之后对数据obj的读取和修改,都通过代理proxy来完成const proxy = new Proxy(obj,handler)
三、Blazor中的响应式数据
Blazor中,字段和属性天然具有响应性,对象也是深层次绑定。利用属性的getter和setter方法,可以对响应式数据进行更复杂的控制。
@page "/"@Num
增加 @employee.Name
更改名称 @employee.Address.City
更改城市 @foreach (var sport in sports){ @sport
}增加运动 @code{ //值类型的属性绑定 public int Num { get; set; } //对象类型的字段绑定(深层次响应) private Employee employee = new Employee { Id = 1, Name = "functionMC", Address = new Address { Province = "广东", City = "广州" } }; //集合类型对象的字段绑定 private List sports = new List { "Running", "Swiming", "BasketBall" }; private void AddNum() { Num++; } private void ChangeName() { employee.Name = "MC"; } private void ChangeCity() { employee.Address.City = "深圳"; } private void AddSport() { sports.Add("FootBall"); }}
实时焦点:一次学俩Vue&Blazor:1.4基础-响应式数据
数论模板
世界微速讯:2023年春运收官:40天发送旅客近16亿人次 大涨50%
【环球报资讯】数据结构刷题2023.02.15小记
给我两分钟的时间:微博风格九宫格:UICollectionView实现
《分布式技术原理与算法解析》学习笔记Day12
【算法训练营day45】LeetCode70. 爬楼梯(进阶) LeetCode322. 零钱兑换 LeetCode279. 完全平方数
香港2022年暴力罪案同比下降7.9%
观天下!探险的好处辩论赛,正方_探险的好处
全球播报:AMD RX 7600S游戏本显卡首测:远不如RTX 3060!高端弃疗了
世界速讯:10道恋爱送命题灵魂拷问ChatGPT:它的回答让我陷入沉思
马斯克向往每周只工作80小时!网友:驴都不敢这么用
每日速读!中国内地特供!Intel i5-13490F处理器图赏
天天快看:002. html篇之《表格》
当前视讯!力扣---3. 无重复字符的最长子串
今日热文:轻薄长续航!小新Air14超极本2023发布:标配13代酷睿+1TB SSD
普及1TB 联想小新2023笔记本、一体机价格汇总:最贵才8999元
每日资讯:8999元 联想小新Pro 27一体机发布:13代酷睿i9搭配Arc独显
环球微头条丨4199元起 小新14/16轻薄本2023发布:酷睿i5-1340P、高配1TB SSD
播报:三星Galaxy S23 Ultra发布 老外怒赞:安卓阵营老大
最资讯丨【LeetCode栈与队列#05】滑动窗口最大值
如何优雅的在 Word 中添加漂亮的代码?
今日热文:2023.02.15.差分
热头条丨公积金月汇缴额是什么意思
当前热讯:用微信传播盗版电影被查:向两百多人分享《流浪地球2》《满江红》链接
新资讯:日本独居雌长臂猿突然产崽!孩子的父亲竟还是自己的“爷爷”
环球最新:Lady Gaga《小丑2》剧照首曝:疯狂的小丑女登场!
环球速讯:联想小新官宣接入百度“文心一言”:可在桌面一键直达
当前通讯!新能源车企现最大跌幅背后:涨价、营销、刺激消费的“国补退坡游戏”
【环球速看料】数据类型之字符串、数据类型之列表、数据类型之字典、数据类型之布尔值、数据类型之元组、数据类型之集合、与用户交互、格式化输出、基本运算符
每日热讯!数字化开采|AIRIOT智慧矿山自动化生产解决方案
全球视讯!wagger也不好用了!API文档还得是Apipost
世界信息:Web 页面之间传递参数
Java开发工具IntelliJ IDEA 2020.2完整授权流程
观速讯丨一加显示器E 24上市:24寸IPS屏、18W PD输出
环球最新:网易代理《迷室3》《迷室:往逝》经典手游宣布停运:数据全清空
硬蹭名气?《中国式相亲2》非《中国式家长》团队作品
热议:桂格燕麦诞生于俄亥俄引网友关注 客服:产品与俄亥俄无关
环球微动态丨电量低于20%赶快充电!雅迪电动车保养攻略来了:关乎安全 车主必看
前沿热点:M值如何兑换话费
焦点观察:记录--『uni-app、小程序』蓝牙连接、读写数据全过程
全球速看:PostgreSQL重要参数解析及优化
天天新动态:openeuler加载dpdk驱动模块
【全球报资讯】(数据库系统概论|王珊)第三章关系数据库标准语言SQL-第六、七节:视图
环球热头条丨【算法训练营day44】完全背包基础 LeetCode518. 零钱兑换II LeetCode377. 组合总和IV
天天看热讯:想要模仿LPL,DRX赛后发漫画,却被Gen官方拉黑了?
焦点速读:Win11下月喜迎更新大礼包:10GB补丁 重启次数更少
【环球播资讯】员工发现老板娘偷看同事微信:火速离职
天天精选!车标成伤人凶器 日产召回超40万辆汽车
索尼降噪耳机新秀!WH-CH720N意外偷跑:升级蓝牙5.2
大国重器 首台国产HA级重型燃机下线:未来将100%零排放
焦点!字体查看小工具 -- (采用wpf开发)
【算法训练营day43】LeetCode1049. 最后一块石头的重量II LeetCode494. 目标和 LeetCode474. 一和零
每日看点!独立包装:大牌N95口罩25片9.9元到手
环球观速讯丨贾跃亭名下已无财产可执行:无车辆、不动产
【环球报资讯】苹果逐渐向OLED过渡!替换掉mini LED
世界消息!羊毛没了 Steam阿根廷区《卧龙》价格暴涨一倍
焦点讯息:一看就能装!奇瑞iCar原厂趣改套件上市:3389元起
你应该知道的微信小程序游戏技术❗️❗️
【算法题--异或操作】找出数组中唯一没有重复的那个元素
极兔一面:Dockerfile如何优化?注意:千万不要只说减少层数
环球时讯:怎样的目标管理能真正实现目标?做到这3点就对了
开心档之Java 流(Stream)、文件(File)和IO
【焦点热闻】舍利子制作方法居然也有发明专利 网友:得道高僧等级速升外挂
世界即时:跑腿师傅诉苦:男子订一束花送五个女生均被拒 还被扣款差评
微软将用UUP方式推送.NET更新:“可选更新”终于可控
钉钉iOS版喜迎更新:支持定时消息 再不怕打扰别人休息了
天天热讯:《星际争霸2》新晋中国世界冠军李培楠:别给暴雪送钱 不要买!
天天最新:CSS 盒模型和 box-sizing 属性
环球讯息:全志h616,Ubuntu,python3.9环境搭建
【全球新要闻】【关系型数据库】事务特性及事务隔离级别
软件自动化测试高频面试题
环球百事通!游戏帧数暴增84% 英特尔锐炫显卡新老驱动对比
当前动态:山东多人无视劝阻赶海 1人溺水遇难:必须小心这4点
世界即时看!价值7万的爱马仕包运输途中被烧毁!顺丰:如果是我们的问题 会进行处理
天天速看:男子给女友转账140万分手想要回:女方最终被判返还40万
每日热门:媒体曝苹果扩大在印产量障碍重重:这品控看完避雷
新资讯:时隔多年,这次我终于把动态代理的源码翻了个地儿朝天
环球速读:AI照骗恐怖如斯!美女刷屏真假难辨 网友:警惕AI网恋诈骗
【全球时快讯】万元级最香!ROG四款满血笔记本齐上阵:魔霸新锐2023首发9999元手慢无
SQL工具性能实测:居然比Navicat还快,数百万行数据导出仅51秒
当前要闻:从上至下遍历二叉树---队列的性质
全球焦点!00后男生长期把可乐当水喝:牙全坏
《巫师3》次时代版热修复上线:解决4.01版性能问题
MINI纯电Countryman谍照
世界简讯:贾跃亭再被执行2.4亿:总额超42亿!自称FF91四月交付
车主称凯迪拉克新车刹车失灵高速上撞车 网友:这次支持4S
焦点要闻:xxl-job~为宿主机添加定时备份数据库的程序
扬汤止沸是什么意思?扬汤止沸是做功还是热传递?
生活中测量质量的工具有哪些?生活中测量质量的工具研究背景
每日观点:199元!小米30W无线车充开售:电动夹臂 iPhone也能用
天天快资讯:荣耀Magic5系列样张首曝光 AI无人抓拍或刷新拍照速度革命 2月27日全球发布!
全球头条:首发7999起 机械师曙光16 Pro开启预售:可选13代i9+RTX 4070
通讯!13倍浓缩:日本隅田川胶囊咖啡1.2元/杯大差价抄底
你最信任哪家快递公司?数千网友近一半投票给了它
露蜂房和蜂房有什么区别?露蜂房的功效和作用是什么?
漫画长歌行的结局是什么?漫画长歌行什么时候恢复更新?
汉武帝叫什么名字?汉武帝之后的皇位顺序
屏幕分辨率调不了是什么原因?屏幕分辨率调不了怎么解决?
荣事达手机怎么刷机?荣事达手机所有型号