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

温州网站建设培训学校代做百度收录排名

温州网站建设培训学校,代做百度收录排名,二级域名免费网站怎么申请,石家庄seo扣费一、直接添加属性的问题 我们从一个例子开始 定义一个p标签#xff0c;通过v-for指令进行遍历 然后给botton标签绑定点击事件#xff0c;我们预期点击按钮时#xff0c;数据新增一个属性#xff0c;界面也 新增一行 p v-for(value,key) in item :key通过v-for指令进行遍历 然后给botton标签绑定点击事件我们预期点击按钮时数据新增一个属性界面也 新增一行 p v-for(value,key) in item :keykey{{ value }} /p button clickaddProperty动态添加新属性/button实例化一个vue实例定义data属性和methods方法 const app new Vue({el:#app,data:(){item:{oldProperty:旧属性}},methods:{addProperty(){this.items.newProperty 新属性 // 为items添加新属性console.log(this.items) // 输出带有newProperty的items}} })点击按钮发现结果不及预期数据虽然更新了console打印出了新属性但页面并没有更新 二、原理分析 为什么产生上面的情况呢 下面来分析一下 vue2是用过Object.defineProperty实现数据响应式 const obj {} Object.defineProperty(obj, foo, {get() {console.log(get foo:${val});return val},set(newVal) {if (newVal ! val) {console.log(set foo:${newVal});val newVal}}}) }当我们访问foo属性或者设置foo值的时候都能够触发setter与getter obj.foo obj.foo new但是我们为obj添加新属性的时候却无法触发事件属性的拦截 obj.bar 新属性原因是一开始obj的foo属性被设成了响应式数据而bar是后面新增的属性并没有通过Object.defineProperty设置成响应式数据 三、解决方案 Vue 不允许在已经创建的实例上动态添加新的响应式属性 若想实现数据与视图同步更新可采取下面三种解决方案 Vue.set()Object.assign()$forcecUpdated() Vue.set() Vue.set( target, propertyName/index, value ) 参数 {Object | Array} target{string | number} propertyName/index{any} value 返回值设置的值 通过Vue.set向响应式对象中添加一个property并确保这个新 property 同样是响应式的且触发视图更新 关于Vue.set源码省略了很多与本节不相关的代码 源码位置src\core\observer\index.js function set (target: Arrayany | Object, key: any, val: any): any {...defineReactive(ob.value, key, val)ob.dep.notify()return val }这里无非再次调用defineReactive方法实现新增属性的响应式 关于defineReactive方法内部还是通过Object.defineProperty实现属性拦截 大致代码如下 function defineReactive(obj, key, val) {Object.defineProperty(obj, key, {get() {console.log(get ${key}:${val});return val},set(newVal) {if (newVal ! val) {console.log(set ${key}:${newVal});val newVal}}}) }Object.assign() 直接使用Object.assign()添加到对象的新属性不会触发更新 应创建一个新的对象合并原对象和混入对象的属性 this.someObject Object.assign({},this.someObject,{newProperty1:1,newProperty2:2 ...})$forceUpdate 如果你发现你自己需要在 Vue 中做一次强制更新99.9% 的情况是你在某个地方做错了事 $forceUpdate迫使 Vue 实例重新渲染 PS仅仅影响实例本身和插入插槽内容的子组件而不是所有子组件。 小结 如果为对象添加少量的新属性可以直接采用Vue.set()如果需要为新对象添加大量的新属性则通过Object.assign()创建新对象如果你实在不知道怎么操作时可采取$forceUpdate()进行强制刷新 (不建议) PSvue3是用过proxy实现数据响应式的直接动态添加新属性仍可以实现数据响应式 可以直接采用Vue.set() 如果需要为新对象添加大量的新属性则通过Object.assign()创建新对象如果你实在不知道怎么操作时可采取$forceUpdate()进行强制刷新 (不建议) PSvue3是用过proxy实现数据响应式的直接动态添加新属性仍可以实现数据响应式
http://www.hkea.cn/news/14482806/

相关文章:

  • 网站建立需要多久清远网站制作公司
  • 襄阳蒂凯网络网站建设小程序餐饮店会员卡管理系统
  • 网站贸易表格怎么做企业网站开发外包公司
  • 上海企业网站设计公司柳州建设网栗园新居
  • 各大搜索引擎网站登录入口湖南哪里有做网站的
  • 中通建设计院网站wordpress 文章缩放
  • 西安免费做网站价格河北网站开发哪家好
  • 外贸手工做兼职的网站延安做网站的公司电话
  • 网站模板带后台 下载龙岗网站建设哪家技术好
  • 潍坊网页模板建站淘宝客网站怎么做优化
  • 河津网站建设网站建设网页设计与网页制作
  • 用ps做网站还是wdwordpress 评论不了
  • 网站设计初步规划农家乐网站模板
  • it之家网站源码wordpress 谷歌收录
  • 母婴行业网站建设关于网站建设实训报告
  • 对网站做数据统计的目的是什么烟台微信网站建设
  • 怎么制作网站平台电话wordpress媒体库加一个分类
  • 建个静态网站花都网站建设公司
  • 杭州网站模板建站360网站建设
  • 个人网站管理系统wordpress 当前分类
  • 做推广赚钱的网站给人做违法网站规避
  • asp access 做网站宜昌外贸网站建设优化推广
  • 网站网页的书签怎么做许昌网站推广公司
  • 怎么创建网站快捷方式到桌面有人有片资源吗免费高清
  • 深圳官方网站制作成都房地产交易中心官网
  • 北京建网站公司有哪些网址导航网址大全
  • 成都网站制作和建设东莞市公租房申请网站-建设网
  • 扒完网站代码之后怎么做模板图片分类展示网站源码
  • 有关网站开发的国外书籍外包做网站赚钱么
  • 搜索网站的软件有哪些公司建网站怎么做