vue之keep-alive

在home首页

<template>
  <div>
    首页
    <router-link to="/list">跳转列表</router-link>
  </div>
</template>
<script>
export default {};
</script>
<style lang="less" scoped></style>

商品列表

<template>
  <div>
    列表
    <router-link to="/detail">跳转详情</router-link><br />
    <router-link to="/home">跳转首页</router-link>
    <p>{{ msg }}</p>
  </div>
</template>
<script>
export default {
  data() {
    return {
      msg: '默认的数据',
    };
  },
  created() {
    console.log('created装状态');

    
  },
  methods: {
    getNewData(a) {
      this.msg = a;
    },
  },

  beforeRouteEnter: (to, from, next) => {
    if (from.name === 'detail') {
      to.meta.isBack = true;
      to.meta.keepAlive = true;
    }
    next();
  },
  activated() {
    console.log('激活状态');

    if (!this.$route.meta.isBack) {
      this.getNewData('主页进入的新数据');
    }
    this.$route.meta.isBack = false;
  },
};
</script>
<style lang="less" scoped></style>

商品详情

<template>
  <div>
    详情
    <router-link to="/list">跳转列表</router-link><br />
    <router-link to="/home">跳转首页</router-link>
  </div>
</template>
<script>
export default {};
</script>
<style lang="less" scoped></style>

router.js

import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from '../components/home.vue';
import Detail from '../components/detail.vue';
import List from '../components/list.vue';

Vue.use(VueRouter);

const routes = [
  {
    path: '/',
    redirect: '/home',
    meta: {
      keepAlive: false,
    },
  },
  {
    path: '/home',
    component: Home,
    name: 'home',
    meta: {
      keepAlive: false,
    },
  },
  {
    path: '/list',
    component: List,
    name: 'list',

    meta: {
      keepAlive: true,
      isBack: false,
    },
  },
  {
    path: '/detail',
    component: Detail,
    name: 'detail',
  },
];

const router = new VueRouter({
  routes,
});

export default router;

总结:首次从首页进入列表页面先created再activated,之后任何页面进入到list页面后created都不会执行 只会执行activated,所以需要在activated进行获取新数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值