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

网站运营模式建设部网站资质升级陈述通过

网站运营模式,建设部网站资质升级陈述通过,爱站网 关键词挖掘工具站,做网站的服务器还需要空间吗vue2-给data动态添加属性 1. 问题的来源 在VUe2中(VUE3中使用了proxy,及时动态添加也能实现响应式),如果我们动态给data添加一个属性,会发现视图没有同步更新举个例子我们通过v-for遍历data中的一个属性list&#xf…

vue2-给data动态添加属性

1. 问题的来源

  • 在VUe2中(VUE3中使用了proxy,及时动态添加也能实现响应式),如果我们动态给data添加一个属性,会发现视图没有同步更新
  • 举个例子
  • 我们通过v-for遍历data中的一个属性list,生成一系列的div标签
  • 然后有一个按钮,点击按钮增加一个data的属性list的子项,
  • 当我们点击按钮时,会发现并没有多一个div出来
<div v-for="(item,index) in list">{{item}}</div>
<button @click="addProperty">动态添加属性</button>
<script>const app=new Vue({data(){return{list:{name:'tom'}}},methods:{addProperty(){this.list.age=12//为list动态添加新属性console.log(this.list)//打印添加属性后的list {name:'tom' , age:12}}}})
</script>
  • 我们点击按钮,发现打印出了新属性但是视图没有得到更新
  • 为什么呢,得从VUE2的响应式原理说起

2. 原理分析

  • 在VUE2中,响应式是通过Object.defineProperty来实现的
const obj={name:'tom'
}
Object.defineProperty(obj,'name',{get(){console.log(`get name ${obj['name']}`)return obj['name']},set(newVal){console.log(`set name ${newVal}`)obj['name']=newVal}
})
  • 当我们访问name(obj.name)或者设置name(obj.name=‘newVal’)的时候,会触发getter和setter
  • 这工作实在VUE实例化的时候做完的
  • 当我们为obj添加新属性的时候,因为新属性错过了响应式化的时机,没有通过Object.defineProperty设置为响应式数据,所以数据改变时,无法通知Watcher去更新视图

3. 解决方案

3.1 Vue.set()

  • 既然是因为错过了响应化时机,那我们就再把新属性响应化一次就行
  • 通过Vue.set向响应式对象中添加一个property,并确保这个新property同样是响应式的额。且出发视图更新
function set(target:Array<any> | Object,key:any,val:any):any{defineReactive(ob.value,key,val)ob.dep.notify()return val
}

3.2 Object.assign()

  • 直接使用Object.assign添加到对象的新属不会触发更新,需要新建一个对象,合并源对象与混入对象的属性
this.oldObject=Obejct.assign({},this.onlObject,{newProperty1:1,newProperty2:2,...})

3.3 $forceUpdate

  • 看名字就知道了,强制更新,迫使Vue实例重新渲染,进影响实例本身和插入插槽内容的子组件

4. 总结

  1. 如果要添加少量 的新属性,用Vue.set()
  2. 如果要添加大量的新属性,Object.assign()
  3. 如果你就想然他跟新,那干脆$forceUpdate,但是建议少用
http://www.yayakq.cn/news/161553/

相关文章:

  • 关于公司网站建设的若干意见网站设计制作策划
  • 网站建设微信开发wordpress 自定义鼠标
  • 动易网站开发的主要技术做网站怎么插音频
  • 雅安建设局网站山东省郓城县建设局官方网站
  • 温州外贸网站设计昵图设计师服务平台
  • 权威网站优化价格济南做网站最好的公司
  • 对网站建设好学吗淘宝优惠群的网站是怎么做
  • 教师网站建设机培训体会免费下载设计网站页面步骤
  • 公司网站怎么做教程做视频网站用哪个cms
  • 什么是营销网络网站建设和优化的营销话术
  • 做会计网站的流程图如何防止别人攻击自己的网站
  • 做图海报网站仿5173网站
  • 活动发布类网站开发国内新闻最新5条
  • 新加坡网站开发公司眼查看网站开发语言
  • 广州建设官方网站电子商务网站建设方案目录
  • 网站建设服务器可以租吗聊城做网站费用价位
  • 怎么建设品牌网站网站建设推广小王熊掌号
  • wordpress小程序开发文档百度关键词seo排名软件
  • 怎样自己做刷赞网站做租车行网站
  • 自学编程的网站微信开放平台怎么扫码登录游戏
  • 互联网外包是什么意思搜索引擎营销优化诊断训练
  • 嘉兴网站公司金鹏建设集团网站
  • pc网站建设哪个好株洲网站建设优度
  • 各种大型网站腾讯开放平台官网
  • 淮南餐饮网站建设哪个公司做公司网站好
  • 上海外贸soho网站建设wordpress邮件发文
  • 建立网站的英文怎么做网页设计的页面
  • 网站开发需要什么知识简单的静态 新闻 asp 网站源码
  • 做网站宜宾wordpress stheme
  • 做两个单页面网站大概多少钱python不会的题去哪搜