当前位置:首页 > VUE

要实现vue deactivated

2026-02-18 09:34:24VUE

Vue 中的 deactivated 生命周期钩子

deactivated 是 Vue 组件的一个生命周期钩子,属于 <keep-alive> 缓存组件的特有钩子。当组件被 <keep-alive> 包裹且从 DOM 中移除(但未销毁)时触发,通常与 activated 钩子配对使用。

使用场景

  • 组件被 <keep-alive> 缓存后切换出视图时触发。
  • 适合执行清理操作(如取消定时器、移除事件监听)或保存组件状态。

基本用法

在 Vue 组件中直接定义 deactivated 钩子:

export default {
  deactivated() {
    console.log('组件被停用,进入缓存状态');
    // 执行清理逻辑,如清除定时器
    clearInterval(this.timer);
  }
}

结合 <keep-alive> 使用

确保组件被 <keep-alive> 包裹才能触发此钩子:

<template>
  <keep-alive>
    <component :is="currentComponent" />
  </keep-alive>
</template>

activated 的配合

activated 在组件从缓存重新激活时触发,二者常配合使用:

export default {
  activated() {
    console.log('组件重新激活');
    this.timer = setInterval(() => {
      // 执行某些操作
    }, 1000);
  },
  deactivated() {
    console.log('组件停用');
    clearInterval(this.timer);
  }
}

注意事项

  • <keep-alive> 包裹的组件不会触发 deactivated
  • 组件首次加载时不会触发 deactivated,仅在后续切换时触发。
  • 销毁逻辑(如 beforeDestroy)仍需保留,因为 deactivated 不保证组件最终销毁。

实际应用示例

假设有一个需要保存滚动位置的列表组件:

要实现vue deactivated

export default {
  data() {
    return {
      scrollPosition: 0
    };
  },
  activated() {
    // 恢复滚动位置
    this.$el.scrollTop = this.scrollPosition;
  },
  deactivated() {
    // 保存滚动位置
    this.scrollPosition = this.$el.scrollTop;
  }
}

标签: vuedeactivated
分享给朋友:

相关文章

vue菜单实现

vue菜单实现

Vue 菜单实现方法 使用 Element UI 的菜单组件 Element UI 提供了现成的菜单组件,适合快速实现导航菜单。安装 Element UI 后,可以直接使用 el-menu 相关组件。…

vue实现翻译

vue实现翻译

Vue 实现翻译功能的方法 使用 i18n 插件实现多语言切换 安装 vue-i18n 插件: npm install vue-i18n 创建语言资源文件(如 en.json 和 zh.json):…

vue实现曲线

vue实现曲线

Vue 实现曲线的方法 在 Vue 中实现曲线可以通过多种方式,包括使用 SVG、Canvas 或第三方库如 D3.js、ECharts 等。以下是几种常见的方法: 使用 SVG 绘制曲线 SVG…

vue实现尺子

vue实现尺子

Vue 实现尺子组件 实现一个尺子组件可以通过 Canvas 或纯 CSS 完成。以下是两种常见实现方式: 使用 Canvas 绘制尺子 通过 Canvas 动态绘制刻度线和数字,适合需要高精度或动…

vue实现截屏怎么实现

vue实现截屏怎么实现

Vue实现截屏的方法 使用html2canvas库 html2canvas是一个流行的JavaScript库,可以将网页元素转换为Canvas图像。在Vue项目中安装html2canvas: npm…

vue实现销售程序

vue实现销售程序

Vue实现销售程序的基本步骤 搭建Vue项目基础结构 使用Vue CLI或Vite初始化项目,安装必要依赖(如Vue Router、Vuex/Pinia、Element UI/Ant Design V…