情景:有一个列表,列表的每一行有一个标签可以点击跳转到各自的页面去,如果第二次点击的和第一次点击的是同一个标签的话,那么第二次点击过去的页面内容就从缓存中拿取,否则重新调接口获取页面内容
// 监控他的路径的变化
watch:{
'$route':{
handler(to) {
var hasValue = window.localStorage.getItem('detailUrl') ? window.localStorage.getItem('detailUrl') : ''
if(hasValue) { // 如果有值说明之前有过页面的点击跳转
if(hasValue != to.fullPath) {
// 如果之前第一次跳转的路径hasValue不是这次要跳转的路径to.fullPath的话 ,
重新调取接口并重新存上这次跳转的路径to.fullPath
this.getList()
window.localStorage.setItem('detailUrl',to.fullPath)
}
}else {
// 如果没有过页面点击跳转的话就是第一次把这个to.fullPath路径存起来,供下一次参考
window.localStorage.setItem('detailUrl',to.fullPath)
this.getList()
}
}
}
}
注意:其实准确的说不是跳到不同的页面,其实是同一个页面只不过跳转带过去的参数不一样,根据参数绘制的页面就会不一样,但是vue的created并不是每次进入到页面都会执行,因为vue会使用页面相同的组件,不会进行数据刷新所以要监控他路径的变化。