动态给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()进行强制刷新(不建议)

相关推荐
deli0072 小时前
手机20%突然关机?电量百分比是估的,SOC曲线4组实测
前端
深蓝AI12 小时前
Meta 开源用了八年的设计系统 astryx:连坐两天 GitHub 总榜第一,组件库开始写给 agent 的说明书
前端·人工智能
ruanno_top13 小时前
轮播每 3 秒自己翻页:键盘停不下来,读屏也不知道换了页
vue.js
IT_陈寒13 小时前
Vue的watch把我坑惨了,原来要这样用才靠谱
前端·人工智能·后端
1-1=013 小时前
Vue 3 模板语
前端·javascript·vue.js
用户76103044737113 小时前
【转战智能眼镜开发】ROKID AIUI 小游戏 亚马逊标枪项目实战讲解
前端
风卿13 小时前
看着AI写代码太孤独了,来欣赏星云吧:一个DSH 装饰插件
前端·javascript
牧艺14 小时前
弹层不用再手算坐标了:CSS Anchor Positioning 从原理到可上线
前端·javascript·css
用户老李14 小时前
YOLO 目标检测自学教程 07:YOLOv3——多尺度预测
前端
moshuying14 小时前
ESP32 墨水屏金价牌(上):从点亮到把图片推过去
前端