keep-alive包裹共用一个vue文件的动态路由,vue文件的生命周期如何触发多次

使用 keep-alive 包裹动态路由时, 渲染的组件会被缓存,并不会重复创建实例,因此其生命周期钩子只会在第一次渲染时触发一次。如果想要在每次从缓存中获取组件并进行渲染时触发生命周期钩子,可以考虑以下两种方式:

  1. 在组件内添加 activated 和 deactivated 钩子函数。当组件被激活(即从缓存中取出并渲染)时触发 activated 钩子函数,当组件失活(即从 中移除时)时触发 deactivated 钩子函数。在这两个函数中可以执行需要重新触发的逻辑。

  2. 使用 key 属性为每个缓存的组件添加一个唯一的标识符。当 key 值改变时,缓存的组件会被销毁并重新创建实例,进而触发生命周期钩子。例如:

<template>
  <div>
    <!-- 将当前路由名称作为 key,确保每个页面的 key 值都唯一 -->
    <router-view :key="$route.name"></router-view>
  </div>
</template>

使用 key 值来强制重渲染缓存的组件时要注意,如果 key 值过于频繁地变化,可能会降低性能。因此,在设置 key 值时需要权衡考虑。

猜你喜欢

转载自blog.csdn.net/formylovetm/article/details/130270574