动态给vue的Data添加一个新的属性数据更新但是页面没有更新,怎么解决

Vue不允许在已经创建的实例上动态添加新的响应式属性,若想实现数据与视图同步更新,可以采取下面三种解决方案:

  • Vue.set()
  • Object.assign()
  • $forceUpdated()

Vue.set()

Vue.set(target,propertyName/index,value)

参数

  • { object | array } target
  • { string | number } propertyName/index
  • { any } value

Object.assign()

直接使用Object.assign()添加到 对象的新属性不会触发更新,应创建一个新的对象,合并原对象和混入对象的属性

this.someObject = Object.assign({}.this.soml'keObject,{newProperty1:1,newProperty2:2...})

$forceUpdate

如果你发现你自己需要在Vue中做一次强制更新,99.9%的情况,是你在某个地方做错了事

$forceUpdate迫使Vue实例重新渲染

PS:仅仅影响实例本身和插入插槽内容的子组件,而不是所有子组件

使用场景

如果为对象添加少量的新属性,可以直接采用Vue.set()

如果需要为新对象添加大量的新属性,则通过Object.assign()创建新对象

如果你实在不知道怎么操作时,可采取$forceUpdate()进行强制刷新(不建议)

相关推荐
乐迪信息8 小时前
航道船舶逆行AI识别,港口安全智能告警系统
大数据·前端·人工智能·安全·计算机视觉·音视频
Sayai9 小时前
不重新打包,vim 直接改 jar 包内的前端文件:原理、步骤与避坑
前端·vim·jar
IT_陈寒9 小时前
SpringBoot自动配置失效时我差点把电脑扔了
前端·人工智能·后端
李少兄9 小时前
JavaScript 对象完全指南
开发语言·javascript·ecmascript
何何____9 小时前
web方向js考核题解
开发语言·前端·javascript
风骏时光牛马9 小时前
AI面试复盘:沉淀经验,找准求职短板
前端
liangshanbo12159 小时前
面试题终极整理:手写 Promise.all / Promise.allSettled
前端·javascript·promise
心易行者9 小时前
用HTML在线运行搭后台管理系统:5个核心模块+0服务器,3天跑通完整业务
大数据·前端·网络·人工智能·python
单线程121389 小时前
从案例分析 Vue3 Tokenizer+Parser 源码五
前端·javascript·vue.js
神奇的程序员9 小时前
Apple Watch S12,送一台
前端