Vue2-$forceUpdate方法

543 阅读1分钟

1# 定义

$forceUpdate 是 Vue 实例的一个方法,用于强制对组件进行重新渲染,即使数据没有发生变化。当调用 $forceUpdate 方法时,Vue 会立即重新运行组件的 render 函数,并对所有依赖的数据进行重新计算,然后更新 DOM,以确保界面与数据保持同步。

当使用 $forceUpdate 方法强制对组件进行重新渲染时,会触发 Vue 实例的更新钩子函数 updated。这个钩子函数在组件的 VNode 更新之后被调用。

注意$forceUpdate 方法的缺点在于它会绕过 Vue 的响应式更新机制,直接强制更新整个组件,而不是局部更新,可能导致性能下降和难以追踪的问题。建议仅在确实需要强制更新整个组件时使用,避免频繁调用,以提高代码可维护性和性能表现

2# 示例

<body>
  <div id="app"></div>
  <button onclick="reload()">Reload</button>

  <script>
    let myComponent = Vue.extend({
      template: `<p>{{ message }}</p>`,
      data() {
        return {
          message: 'Hello, Vue!'
        };
      },
      updated() {
        console.log('myComponent 组件被更新了');
      }
    });

    let vm = new myComponent();

    vm.$mount('#app'); // 挂载组件

    // 强制更新
    function reload() {
      vm.$forceUpdate();
    }
  </script>
</body>