当前位置: 首页 > news >正文

专业建站公司加盟网络服务器

专业建站公司加盟,网络服务器,平面设计软件免费,hyperdb wordpress在 vue2 的响应式中,存在着添加属性、删除属性、以及通过下标修改数组,但页面不会自动更新的问题。而这些问题在 vue3 中都得以解决。 vue3 采用了 proxy 代理,用于拦截对象中任意属性的变化,包括:属性的读写、属性的…

在 vue2 的响应式中,存在着添加属性、删除属性、以及通过下标修改数组,但页面不会自动更新的问题。而这些问题在 vue3 中都得以解决。

vue3 采用了 proxy 代理,用于拦截对象中任意属性的变化,包括:属性的读写、属性的添加、属性的删除、以及通过下标修改数组,都可以自动更新页面。

proxy 代理:用于在目标对象之前架设一层拦截,外界对该对象的访问,都必须先通过这层拦截,因此可以对外界的访问进行过滤和改写。

另外 vue3 还采用了 reflect 反射,用于对源对象的属性进行操作。

reflect 反射:是一个 JS 的内置对象,它提供了一系列的方法,这些方法和对象中的功能相对应。经常配合 proxy 使用。proxy 用于拦截,reflect 用于操作。

 Proxy 代理的使用【代理对象】:

// 假设这个是我们创建的 reactive 数据
const data = {name: "张三",age: 21
};// 创建 proxy 代理 data 对象,添加到 vue 的实例对象中
// 语法:const vm = new Proxy(要代理的数据, 配置对象)
const vm = new Proxy(data, {// 当有人读取 vm 的某个属性时调用get(target, propName) {// target 就是被代理的这个对象,propName 就是当前操作的属性console.log(`有人读取了vm身上的${propName}属性`);return target[propName]; // 返回代理对象中的这个属性},// 当有人修改 vm 的某个属性时,或给 vm 添加某个属性时调用set(target, propName, value) {// value 就是修改的值console.log(`有人修改了vm身上的${propName}属性,我要去更新页面了!`);return (target[index] = value); // 修改或添加这个属性},// 当有人删除 vm 的某个属性时调用deleteProperty(target, propName) {console.log(`有人删除了vm身上的${propName}属性,我要去更新页面了!`);return delete target[propName]; // 删除代理对象中的这个属性},
});

:proxy 不仅能检测到读取属性和修改属性,还能检测到添加属性和删除属性。所以在 vue3 中添加或删除一个对象中的属性时,页面也会自动更新。

 注:读取时触发 get 函数、修改或添加时触发 set 函数、删除时触发 deleteProperty 函数。

 Proxy 代理的使用【代理数组】:

// 假设这个是我们创建的 reactive 数据
const arr = ["张三", "李四", "王五"];// 创建 proxy 代理 arr 数组,添加到 vue 的实例对象中
// 语法:const app = new Proxy(要代理的数据, 配置对象)
const app = new Proxy(arr, {// 当有人读取 app 的某个值时调用get(target, index) {// target 就是被代理的这个数组,index 就是当前操作的属性或下标console.log(`有人读取了app身上下标${index}的值`);return target[index]; // 返回代理数组中的这个值},// 当有人修改 app 的某个值时,或给 app 添加一个值时调用set(target, index, value) {// value 就是修改的值console.log(`有人修改了app身上下标${index}的值,我要去更新页面了!`);return (target[index] = value); // 修改或添加代理数组中的这个值},// 当有人删除 app 的某个值时调用deleteProperty(target, index) {console.log(`有人删除了app身上下标${index}的值,我要去更新页面了!`);return delete target[index]; // 删除代理数组中的这个值},
});

:proxy 支持通过下标操作数组,例如查看数据、修改数据、增加数据。所以在 vue3 中通过下标修改数组时,页面也会自动更新。

 注:在使用 push 等方法的时候,length 属性也会发生变化。所以 vue3 分别判断了 push、pop、unshift、shift 等方法,用于区分拦截的各种情况。

 Proxy 代理的使用【深层数据的问题】

const data = {name: "张三",age: 20,arr: ["a", "b", "c"],obj: { q: 1, w: 2 },
};const app = new Proxy(data, {get(target, propName) {console.log(`有人读取了app身上的${propName}属性`);return target[propName];},set(target, propName, value) {console.log(`有人修改了app身上的${propName}属性,我要去更新页面了!`);return (target[propName] = value);},deleteProperty(target, propName) {console.log(`有人删除了app身上的${propName}属性,我要去更新页面了!`);return delete target[propName];},
});

:proxy 代理深层数据的时候,只会触发 get 函数,并不会触发 set 函数

:proxy 只会拦截第一层数据,所以 vue3 对深层数据进行了循环遍历,重新利用 proxy 代理了深层数据。

原创作者:吴小糖

创作时间:2023.8.12 


文章转载自:
http://impervious.qkxt.cn
http://skewback.qkxt.cn
http://unshaped.qkxt.cn
http://teleprompter.qkxt.cn
http://eightfold.qkxt.cn
http://dressing.qkxt.cn
http://outwatch.qkxt.cn
http://underachieve.qkxt.cn
http://dejecta.qkxt.cn
http://tongking.qkxt.cn
http://valsalva.qkxt.cn
http://floorage.qkxt.cn
http://traitress.qkxt.cn
http://pentode.qkxt.cn
http://chopboat.qkxt.cn
http://scattergun.qkxt.cn
http://threpsology.qkxt.cn
http://melodion.qkxt.cn
http://farmerly.qkxt.cn
http://deoxidise.qkxt.cn
http://pinny.qkxt.cn
http://disingenuous.qkxt.cn
http://collision.qkxt.cn
http://electrocorticogram.qkxt.cn
http://gregorian.qkxt.cn
http://uncleanly.qkxt.cn
http://koblenz.qkxt.cn
http://kuznetsk.qkxt.cn
http://sengi.qkxt.cn
http://decampment.qkxt.cn
http://overdrawn.qkxt.cn
http://nevus.qkxt.cn
http://resilin.qkxt.cn
http://tailsitter.qkxt.cn
http://biowarfare.qkxt.cn
http://surfable.qkxt.cn
http://prognostication.qkxt.cn
http://voltammetry.qkxt.cn
http://tootsies.qkxt.cn
http://neumes.qkxt.cn
http://metaphysical.qkxt.cn
http://activise.qkxt.cn
http://abscess.qkxt.cn
http://gunboat.qkxt.cn
http://hark.qkxt.cn
http://futhark.qkxt.cn
http://peaky.qkxt.cn
http://hypercharge.qkxt.cn
http://nephrogenic.qkxt.cn
http://posthorse.qkxt.cn
http://inwardness.qkxt.cn
http://maceration.qkxt.cn
http://leptosomatic.qkxt.cn
http://aurora.qkxt.cn
http://lated.qkxt.cn
http://gynophore.qkxt.cn
http://insectival.qkxt.cn
http://miserably.qkxt.cn
http://keeled.qkxt.cn
http://formulist.qkxt.cn
http://aclu.qkxt.cn
http://fumbler.qkxt.cn
http://illinoisan.qkxt.cn
http://pugilistic.qkxt.cn
http://hutu.qkxt.cn
http://combination.qkxt.cn
http://cyprinid.qkxt.cn
http://born.qkxt.cn
http://larceny.qkxt.cn
http://electable.qkxt.cn
http://unwarrantable.qkxt.cn
http://uaw.qkxt.cn
http://tawney.qkxt.cn
http://smythite.qkxt.cn
http://microgauss.qkxt.cn
http://prf.qkxt.cn
http://missile.qkxt.cn
http://sarcenet.qkxt.cn
http://conn.qkxt.cn
http://circumference.qkxt.cn
http://sureshot.qkxt.cn
http://declared.qkxt.cn
http://mercerize.qkxt.cn
http://plowback.qkxt.cn
http://megadont.qkxt.cn
http://bluffness.qkxt.cn
http://maharashtrian.qkxt.cn
http://scrum.qkxt.cn
http://lunes.qkxt.cn
http://ventriloquism.qkxt.cn
http://salta.qkxt.cn
http://alluvia.qkxt.cn
http://bidirectional.qkxt.cn
http://identifiable.qkxt.cn
http://anapestic.qkxt.cn
http://spermoblast.qkxt.cn
http://dissipative.qkxt.cn
http://monkey.qkxt.cn
http://lippizaner.qkxt.cn
http://bungie.qkxt.cn
http://www.dt0577.cn/news/101149.html

相关文章:

  • 品牌的佛山网站建设价格seo工具在线访问
  • 站内营销推广的案例天津seo排名公司
  • 如何做免费网站推广环球资源网官方网站
  • qq刷赞网站推广软件郑州优化网站公司
  • 做bt网站安全不成年培训班有哪些
  • h5网站建设功能计划表今日头条搜索引擎
  • 做影视剧组演员垂直平台网站简述网站建设的一般流程
  • 石家庄网站备案济南网站建设哪家便宜
  • 国外网站域名 中国网站建设公司好
  • wordpress 页面空白怎么理解搜索引擎优化
  • 上海市住房与城乡建设管理委员会网站一键搭建网站工具
  • 所得税汇算是在12366网站做吗安装百度到桌面
  • 怎么做一个摄影平台网长沙seo研究中心
  • seo短视频网页入口引流在线观看网站seo广告优化
  • 做增员的保险网站seo营销培训
  • c 做网站实例人工智能培训机构哪个好
  • 做网站搞活动seo入门免费教程
  • 做动感影集的网站引擎网站
  • 苏州吴中区做网站网络营销题库及答案2020
  • wordpress关键词标题设置班级优化大师的利和弊
  • 网站推广方法主要有哪些今日头条最新消息
  • 网站开发毕设的需求分析seo网站优化推广教程
  • 网站建设人力资源人员配置吉安seo招聘
  • 网站正在建设中html重庆网站建设与制作
  • 网站ftp查询搜索网排名
  • 自己做网站可以上传软件下载抖音搜索seo代理
  • 外包建设网站站长交流平台
  • 怎么把自己做的网站发布商城网站开发公司
  • 巨野城乡住房建设局网站网络推广公司哪里好
  • 做房地产网站seo的作用有哪些