首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue Keep-alive不工作

vue Keep-alive不工作
EN

Stack Overflow用户
提问于 2018-04-25 18:28:03
回答 2查看 4.1K关注 0票数 1

虽然我设置了keep-alive,但每次我在vue应用程序内容页面刷新时都会使用vue-router。每次进入内容页面时都会调用挂载的钩子和激活的钩子。请原谅我的英语很差。

提前感谢

代码语言:javascript
复制
//home.vue
    <div id="home">
        <topnav ref="childMethod"></topnav>
        <div class="mobile_header" ref="mobile_header"><img src="../assets/img/menu.png" @click="nav()"><p>earnest的小站</p></div>
        <keep-alive>
            <router-view v-if="$route.meta.keepAlive"></router-view>
        </keep-alive>
        <router-view v-if="!$route.meta.keepAlive"></router-view>
        <div id="iconfont1" @click="gotop1()" v-show="show" title="回到顶部"></div>
        <myfooter></myfooter>
    </div>


 //app.vue
<div id="app">
        <!-- 不管写没写跟路由都在APP。vue里面?一定要加上这一句 -->
        <loading v-show="isloading"></loading>
            <router-view></router-view>
</div>

//路由器index.js

代码语言:javascript
复制
const router=new Router({
    mode:'history',
    routes: [
    {
        path: '/',
        redirect:'/content',
        component: home,
        children:[
      //注意这里有逗号
      // 要是hash路由,这里无论点那个路由都是跳转到content
      {path:'/about', name:'about', component:about,meta:{keepAlive:true}},
      {path:'/archives',name:'archives',component:archives,meta:{keepAlive:true}},
      {path:'/content',name:'content',component:content,meta:{keepAlive:true}},
      {path:'/article:_id',name:'article',component:article,meta:{keepAlive:true}}//这里的name是命名路由里面的参数name
      ]
  }
EN

回答 2

Stack Overflow用户

发布于 2019-12-06 16:42:30

在view路由器上使用唯一密钥

代码语言:javascript
复制
<keep-alive>
    <router-view v-if="$route.meta.keepAlive" :key="$route.fullPath"></router-view>
</keep-alive>
票数 3
EN

Stack Overflow用户

发布于 2018-09-20 23:06:58

我认为你需要在你的keep-alive元素中添加一个include=“我的组件名,我的下组件名,等等”属性。您还需要对这些组件进行全局命名和注册。然后,您可以从路由中删除元数据,只需让路由通过名称匹配组件:

应用程序的根vue文件:

代码语言:javascript
复制
<template>
  <div id="app">
    <main role="main">
      <keep-alive include="somecomponent">
        <router-view class="view"></router-view>
      </keep-alive>
    </main>
  </div>
</template>

<script>    
  include SomeComponent from "../path/to/some-component"
  Vue.component("some-component", SomeComponent)
</script>

有关组件名称匹配的更多详细信息,请查看此处:

vue forum: keep-alive not working with vue-router

Child Routes, keep-alive and nested keep-alive destroy considerations

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50019923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档