vue生命周期钩子函数actived没有执行

调用actived钩子函数,发现代码没有执行.......为什么

  • 背景技术选型:vue+vue-router+vuex

第一步:路由配置文件设置keepAlive=true

//index.js
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/Classify',
      name: 'Classify', 
        // 设置keepAlive属性
      meta: {
        keepAlive : true 
      },
      component: resolve => require(['@/views/classify/Classify'], resolve)
    }
  ],
  mode:'history'
})

第二步:标注需要缓存的组件,用<keep-alvie>包裹

<!--app.vue-->
<template>
    <div id="app">
        <!--需要缓存组件-->
        <keep-alive>
            <!--router-view组件是一个 functional 组件,渲染路径匹配到的视图组件-->
          <router-view v-if="$route.meta.keepAlive"></router-view>
        </keep-alive>
        <!--不需要缓存组件-->
        <router-view v-if="!$route.meta.keepAlive"></router-view>
        <moduleFooter></moduleFooter>
    </div>
</template>

第三步:activated函数调用

//Classify.vue
activated () {
  console.log("activated调用了");
}

总结

  • 在router中设置需要缓存的组件
  • <keep-alive>包裹需要缓存组件
  • 页面第一次进入,钩子的触发顺序created-> mounted-> activated,退出时触发deactivated。当再次进入(前进或者后退)时,只触发activated
  • 可以动态控制是否缓存组件,代码如下:
beforeRouteLeave(to, from, next) {
  // 设置下一个路由的 meta
  to.meta.keepAlive = false; // 不缓存,即刷新
  next();
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • VUE Vue :数据驱动的M V Vm框架 m :model(后台提供数据),v :view(页面),vM(模板...
    wudongyu阅读 5,442评论 0 11
  • vue生命周期 每个Vue实例或组件从创建到显示再到废弃的过程就是vue的生命周期。很多时候我们希望能在这个过程中...
    皮皮坤666阅读 29,177评论 1 18
  • Vue知识点的总结 Vue中的指令及其基本语法: 第一步:从官网上下载vue开发版本的js文件 引入js文件 ...
    往前走莫回头_2cd6阅读 1,493评论 0 1
  • 1.vue基本生命周期 vue源码中最终执行生命周期函数都是调用callHook方法,callHook函数的逻辑很...
    WHU_GIS_LJ阅读 19,667评论 0 13
  • 人与人交往中最重要的就是了解,和你最要好的朋友一定是你最了解的人。而这种了解是需要时间来积淀的,可是有的人就会遇到...
    王叔丶丶阅读 422评论 0 0