Vue.js——通过监听(setItem)缓存,实现页面刷新

本文介绍了在Vue.js中如何通过监听嵌入页面的返回数据,将信息存储到缓存,然后在原页面中监听缓存内容,实现页面刷新的需求。监听操作主要在组件的mounted生命周期钩子中进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题需求

嵌入其他系统页面,页面关闭后需刷新原页面

实现思路

在链接处监听嵌入页面是否有返回数据(或者消息等),在监听中设置缓存,在需刷新的原页面监听缓存中对应内容,进行刷新操作。

监听操作均在Vue.js的mounted生命周期中进行

附上Vue.js代码

  1. 监听嵌入页面返回的数据信息,并在缓存中设置reloadYym
mounted:function (){
		window.addEventListener('message',function(e){
			if(e.data=='close'){
				parent.Artery.close();
				localStorage.setItem("reloadYym",new Date().getTime());
  1. 在需刷新的原页面中监听缓存中信息reloadYym
mounted:function(){
		window.addEventListener("storage",function (e) {
			if(e.key=='reloadYym'){
				window.location.reload();
			}
		});
	},
Vue3中,要保存页面缓存数据并跨路由切换,你可以利用`keep-alive`和Vuex(状态管理库)。当你需要长期存储的数据,并且希望在路由切换后仍然存在,可以这样做: 1. **使用Vuex**: 将共享的数据存储到Vuex的状态(store)中。这样所有组件都可以访问和修改这个数据。更新数据时,记得触发状态变化(dispatch actions),以便组件监听到变更并同步状态。 ```js import { createStore } from 'vuex'; const store = createStore({ state: { user: localStorage.getItem('user') || {}, }, mutations: { setUser(state, newUser) { localStorage.setItem('user', JSON.stringify(newUser)); state.user = newUser; }, }, getters: { getUser(state) { return state.user; }, }, }); ``` 2. **使用`keep-alive`**: 当用户离开某个包含`keep-alive`的页面时,将该页面的数据缓存起来。返回时,如果缓存的数据还存在,可以从Vuex中取出,重新赋值给组件。 ```html <keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> </keep-alive> ``` 在每个组件内,你可以设置`$meta`选项来标记是否应该被缓存: ```js export default { beforeRouteEnter(to, from, next) { if (from.meta.keepAlive) { next(vm => vm.$data); // 组件实例已创建,直接取数据 } else { next(); // 不缓存的组件正常创建 } }, }; ``` 3. **缓存清除策略**:对于某些特定情况下的退出(如登录注销或刷新页面),你可能需要清除缓存并从服务器获取最新数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Walter Sun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值