vue遇到的问题五:修改路由参数,不会刷新该页面

1. vue路由,修改某组件的路由参数,不会刷新该组件

需求:在某个组件中,内容由参数发起接口获取,且该组件由上/下翻页效果,
需要改变参数,更新内容

http://localhost:8080/#/module?type=1&id=15 //需要改变id

解决办法:

监听路由

方法一:
watch:{
// 路由发生变化页面刷新
 '$route' (to, from){
	 this.$router.go(0);
	 }
}
//缺点:刷新一次页面,用户体验不好

方法二:
// 将函数在执行一次
watch: {
	'$route' (to, from) {
    // 在created、mounted函数执行的方法,放到该处再执行一次
		fn()·······
	}
},
//缺点:重复发起一次请求

如果有更好的方法,欢迎留言

删除query中的内容 delete this.$route.query.token

2. 某个页面需要token,如果token过期、没有token跳到登录页,登录成功后再返回该页面

实际需求:再A页面,点击“创建活动”功能,需要判断token;如果没有,或过期,强制跳转到登录页,然后登录了成功之后,自动跳转回A页面

//A页面
fn(){
	if(token){
		····
	}else{
		this.$router.push({
          path: '/login',
          query: {
            redirect: this.$router.currentRoute.path, //获取当前路径
          }
        })
	}
}
//登录页
login(){
	成功...
	 this.$router.push({ path: this.$route.query.redirect || ' 主页 ' })
}

如果A页面还需要某些参数,那么参数也放在query中

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 项目中,当我们使用 Vue Router 创建了带有路由参数页面,并将项目打包后,如果我们在页面刷新时发现路由参数消失了。这是因为在打包后的项目中,Vue Router 将路由参数创建为前端路由,在刷新页面时,浏览器向服务器发送请求获取页面,而服务器只返回打包后的静态文件,没有保存路由参数的信息。 为了解决这个问题,我们可以使用一些方法来保存并恢复路由参数。一种常见的方法是使用服务端渲染 (SSR)。通过 SSR,我们可以在服务器端将路由参数一同传递给浏览器,以便在页面刷新时能够恢复参数。但是,SSR 需要特殊的设置和服务器支持,并且增加项目的复杂性和开发难度。 另一种方法是使用浏览器的本地存储机制,如 localStorage 或 sessionStorage。在页面加载时,我们可以将路由参数存储在本地存储中,然后在页面刷新后,通过读取本地存储中的参数来恢复。这种方法相对简单,但需要我们手动管理本地存储的数据,以确保数据的正确性和安全性。 除了以上两种方法,还可以考虑使用 URL 查询参数来保存路由参数。在页面加载时,我们可以通过读取 URL 查询参数来获取路由参数,并在刷新页面时,将参数添加到 URL 中以便浏览器重新获取。这个方法相对简单,但在 URL 上暴露参数,可能对用户体验和安全性产生影响,需要谨慎使用。 综上所述,当 Vue 项目打包后,在页面刷新路由参数消失,我们可以考虑使用 SSR、浏览器本地存储或 URL 查询参数来保存和恢复路由参数。根据项目的需求和实际情况,选择最合适的方法来解决问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值