gpt4 book ai didi

vue.js - Vue 路由器使用 keep-alive 来缓存某些组件?

转载 作者:搜寻专家 更新时间:2023-10-30 22:12:38 25 4
gpt4 key购买 nike

我最近开始使用 vue,我已经设法创建了一些简单的页面,但我注意到组件一旦加载就不会被缓存,因此例如下面的链接(这是我正在处理的)youtube视频加载需要时间,如果我点击任何其他链接并返回视频,它们会再次加载。

是否可以用来缓存组件?最好是全部,而不是 1 乘 1。

这是我的 View :

import VueRouter from 'vue-router';
import Create from '../components/homepage/create.vue';
import How from '../components/homepage/how.vue';
import About from '../components/homepage/about.vue';
import Youtube from '../components/homepage/youtube.vue';
import Navigation from '../components/homeNavigation.vue';
import Login from '../components/auth/login.vue';
import Register from '../components/auth/register.vue';


const routes = [
{ path: '/create', component: Create },
{ path: '/how', component: How },
{ path: '/about', component: About},
{ name: 'youtube', path: '/youtube', component: Youtube},
{ path: '/login', component: Login},
{ path: '/register', component: Register},
];

Vue.use(VueRouter);
Vue.component('navigation', Navigation);

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

new Vue({
el: '#app',
router,
updated: function () {
Pace.restart()
},
mounted: function() {
Pace.restart()
}
});

查看:

<div id="app">
<navigation></navigation>
<transition appear name="slide-fade" mode="in-out">
<keep-alive include='youtube'>
<router-view></router-view>
</keep-alive>
</transition>
</div>

我的应用:

http://b2750916.ngrok.io/#/youtube

最佳答案

在这里检查这个答案: https://forum.vuejs.org/t/keep-alive-specific-component/2372/2

从 v2.1 开始,您可以使用“include”和“exclude”属性作为正则表达式来控制将缓存哪个组件。这些属性也可以被 v-bind'ed: https://v2.vuejs.org/v2/api/#keep-alive

另一种方法是在您不想保留缓存的组件上使用deactivated Hook 。在钩子(Hook)中,您调用 this.$destroy();,它会在不使用时删除缓存下的组件。

此外,也许这对您有帮助? https://github.com/LinusBorg/portal-vue

不确定 portal-vue 是否可行,但我的想法是将视频放在外面,以便它独立呈现(在根组件中放置的“门户”中)并使用“门户目标”使其出现在您想要的位置".

关于vue.js - Vue 路由器使用 keep-alive 来缓存某些组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47560502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com