vue2.x $forceUpdate 强制更新组件

在这里插入图片描述

1 概述

首先:感谢 Vue 的响应式系统,它始终知道何时进行更新 (如果你用对了的话)。

特殊场景:
(1)不过还是有一些边界情况,你想要强制更新,尽管表面上看响应式的数据没有发生改变。
(2)也有一些情况是你想阻止不必要的更新。

强制更新

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

原因:

  • Vue 中 数组/对象的变更检测未触发。
  • Vue 响应式系统追踪的状态之外的。

然而,如果你已经做到了上述的事项仍然发现在极少数的情况下需要手动强制更新,那么你可以通过 $forceUpdate 来做这件事

作用:是 vue 内部封装的核心方法,用于强制刷新 vue 组件

语法

this.$forceUpdate()

应用 !!!

1、解决 对象/数组 追加(没有初始化的)属性值不更新的问题;

方法 1:$forceUpdate 解决

methods:{
  updateName(){
    // tip: 原 data 内初始化的数据没有这个字段
    this.userInfo.name='小红'// 在此时,确实已经将userInfo对象修改完成
    console.log(this.userInfo.name); // 输出结果: 小红
    this.$forceUpdate(); // 在这里,强制刷新之后,页面的结果变为'小红'
  }
}

示例1:更新组件示例

方法 2:$set 解决

link> api
使用 $set 设置追加字段

注意

1、它仅仅影响实例本身和插入插槽内容的子组件,而不是所有子组件。
(注意,组件的插槽子组件也会影响)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值