赞
踩
- <router-view v-slot="{ Component, route }">
- <keep-alive :include="cacheViewsState">
- <component :is="Component" />
- </keep-alive>
- </router-view>
可以将要缓存的页面作为vuex全局变量储存
const cacheViewsState = store.state.app.cachedViews
将cachedViews 存入vuex:
- state: {
-
- cachedViews: ['listPage']
- },
- mutations:{
-
- ADD_CACHED_VIEW: (state, view) => {
- if (state.cachedViews.includes(view)) return
- state.cachedViews.push(view)
- },
- DEL_CACHED_VIEW: (state, view) => {
- const index = state.cachedViews.indexOf(view)
- index > -1 && state.cachedViews.splice(index, 1)
- }
- },
- actions: {
- //添加缓存组件
- addCachedView({ commit }, view) {
- commit('ADD_CACHED_VIEW', view)
- },
- //删除缓存组件
- delCachedView({ commit, state }, view) {
- return new Promise((resolve) => {
- commit('DEL_CACHED_VIEW', view)
- resolve([...state.cachedViews])
- })
- }
- }

将页面导出命名空间设置为动态缓存页面名单
- <script>
- export default {
- name: 'listPage'
- }
- </script>
onActivated 注册一个回调函数,若组件实例是 <KeepAlive> 缓存树的一部分,当组件从 DOM 中被移除时调用。
这个钩子在服务器端渲染期间不会被调用。
- onActivated(() => {
- getList() // 初始化列表
- })
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。