Vue数据响应式原理是什么
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本文小编为大家详细介绍"Vue数据响应式原理是什么",内容详细,步骤清晰,细节处理妥当,希望这篇"Vue数据响应式原理是什么"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。响
千家信息网最后更新 2025年02月23日Vue数据响应式原理是什么
本文小编为大家详细介绍"Vue数据响应式原理是什么",内容详细,步骤清晰,细节处理妥当,希望这篇"Vue数据响应式原理是什么"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
响应式是什么
简而言之就是数据变页面变
如何实现数据响应式
在Javascript里实现数据响应式一般有俩种方案,分别对应着vue2.x 和 vue3.x使用的方式,他们分别是:
对象属性拦截 (vue2.x)
Object.defineProperty
对象整体代理 (vue3.x)
Proxy
其中对象属性拦截,道理都是相通的
实现对象属性拦截
字面量对象定义
let data = { name:'小兰同学'}
Object.defineProperty对象定义
let data = {}Object.defineProperty(data,'name',{ // 访问name属性就会执行此方法 返回值就是获取到的值 get(){ console.log('name属性被获取了') return '小兰同学' }, // 设置新值就会执行此方法 newVal就是设置的新值 set(newVal){ console.log('name属性被设置新值了') console.log(newVal) }})
我们可以通过 data.name 去获取值,也可以通过 data.name=‘小赵同学’去赋值
存在问题演示
最后获取name值没有被改变
解决方案
我们可以 通过一个中间变量 _name
来中转get函数和set函数之间的联动
let data = {}let _name = '小兰同学'Object.defineProperty(data,'name',{ // 访问name属性就会执行此方法 返回值就是获取到的值 get(){ console.log('name属性被获取了') return _name }, // 设置新值就会执行此方法 newVal就是设置的新值 set(newVal){ console.log('name属性被设置新值了') console.log(newVal) _name = newVal }})
结果验证
通用的劫持方案
大家想想看,如果现在有一份已经声明好了数据的对象,我们如何通过劫持的方法把每一个属性都变成setter和getter的形式
下面是一份已经声明好的数据
let data = { name: '小兰同学', age: 18, height:180}
我们想让里面所有的属性都变成响应式的,并且get和set方法中对于每个属性值的操作是连通的
let data = { name: '小兰同学', age: 18, height:180}// 遍历每一个属性Object.keys(data).forEach((key)=>{ // key 属性名 // data[key] 属性值 defineReactive(data,key,data[key])})// 响应式转化方法function defineReactive(data,key,value){ Object.defineProperty(data,key,{ get(){ return value }, set(newVal){ value = newVal } })}
结构说明:这个地方实际上使用了闭包的特性,看下图,在每一次的defineReactive函数执行的时候,都会形成一块独立的函数作用域,传入的value
因为闭包的关系会常驻内存,这样一来,每个defineReactive函数中的value
会作为各自set和get函数操作的局部变量
读到这里,这篇"Vue数据响应式原理是什么"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
属性
数据
对象
函数
同学
就是
小兰
此方法
原理
文章
方案
方法
内容
变量
可以通过
闭包
妥当
这样一来
一来
下图
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
支持分页查询的数据库
生活中网络安全例子及解决办法
软件开发项目影响评价
多媒体数据库系统及其应用
服务器和id是什么意思
贺州学院网络安全
维希服务器
架设内网服务器
网络技术公司会计设置科目
网络技术考试题
2019年软件开发书单
网络技术服务协议范本
数据库与商业智能mooc答案
网络安全监测探针设备
服务器可以做路由器吗
池州电力软件开发定制公司
可处理电子数据库
hp服务器uid报警
股票手机软件开发
张召忠谈网络安全性
怎么删除多个服务器
网络安全法对个人信息有什么用
nas服务器的优势
上虞财务软件开发公司
关于网络安全的手抄报彩铅
宝山区服务器回收厂家
网络安全意识培养主题班会教案
网络安全自查情况
网络安全九道关
qq服务器怎么下迷你世界