tuandm / laravue

Admin dashboard for enterprise Laravel applications built by VueJS and Element UI https://laravue.dev
https://laravue.dev
MIT License
2.21k stars 654 forks source link

Tags View如何禁止自动刷新? #304

Open MyPuppet opened 3 years ago

MyPuppet commented 3 years ago

例如当我访问了<搜索订单>点击订单详情后进入新的tag<订单详情>页面, 如果此时我再从tag views列表重新回到<搜索订单>页面时所有搜索数据将丢失,我不得不重新搜索。

请问除了自己做缓存外有无更直接的方法解决此问题?

已经尝试过meta.noCache设置为false,但是这并没有解决问题,甚至没发现区别。。

MyPuppet commented 3 years ago

我尝试使用了keep-alive,但是它并未生效,每次进入<搜索订单>时还是会自动刷新页面

diudiudiuu commented 3 years ago

一般用vuex记住上次访问数据。不过要考虑刷新数据丢失问题。

diudiudiuu commented 3 years ago

created () {

// 在页面加载时读取sessionStorage里的状态信息
if (sessionStorage.getItem('temporary')) {
  this.$store.state.session = JSON.parse(sessionStorage.getItem('temporary'))
  // 删除
  sessionStorage.removeItem('temporary')
}
const session = this.$store.state.session
// 在页面刷新时将vuex里的信息保存到sessionStorage里
window.addEventListener('beforeunload', () => {
  sessionStorage.setItem('temporary', JSON.stringify(session))
})

},

这块的代码写在App.vue中 1.创建store session 模块,这个模块可以专门保存刷新后需要保留的数据,比如,你的需求搜索信息,分页等. 2.只需要在页面上读取信息时,先读取store 中session的数据,这样应该可以保持住你上次的选择. 3.保持上次的选择但是接口还是会加载,不过应该可以满足你搜索不丢失问题