vue中keep-alive,include的缓存问题
前提:有A,B,C,D四个页面,A是按钮页(点击按钮进入B页面),B是订单列表页,C是订单详情页,D是费用详情页
下城ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
需求:顺序是A->B->C->D,每次都刷新页面,D->C->B时走缓存,但是每次从A到B都要刷新B页面,从B到C需要刷新C页面,从C到D要刷新D页面
在vue官方文档2.1以上有include 和 exclude 属性允许组件有条件地缓存。在这里主要用include结合vuex来实现(四个页面组件都有自己的name才会生效,这里name就叫A,B,C,D)
从D->C,从C->B,从B->A 可以写一个公共的头部返回组件,统一使用 this.$router.go(-1)返回前一页
App.vue
store.js
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { keepAlive: [] }, mutations: { SET_KEEP_ALIVE: (state, keepAlive) => { state.keepAlive = keepAlive } }, getters: { keepAlive: state => state.keepAlive } })
每次进入B页面时先初始化 keepAlive(设置要走缓存的页面)
A.vue
B.vue 该页面用来设置缓存和清除缓存
到这里就实现了需求
PS:vue keep-alive include无效
检查版本
确定当前的vue版本的是2.1+
因为include和exclude是vue2.1.0新增的两个属性.
package.json
"vue": "^2.5.2",
检查name
注意,不是router.js中的name,而是单个vue组件中的name属性.
建议将router.js中的name和vue组件的name保持一致,不要混乱.
export default { name: "index" }
多层嵌套
网上的答案几乎都是检查vue组件的name属性,但还是有一个巨坑.
那就是多级嵌套
// app.vue// other.vue
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。
当前文章:vue中keep-alive,include的缓存问题
分享网址:http://ybzwz.com/article/gohhci.html