vue踩坑之生命周期失效、路由带参跳转刷新无数据等问题解决

1、 生命周期函数失效

       界面进行跳转的时候,跳转界面首次执行mounted方法,之后跳转进入,界面数据不刷新。

解决方法:

/** 使用路由钩子函数进行执行 */
beforeRouteEnter (to, from, next) {
  next(vm => { //  这里的vm指的就是vue实例,可以用来当做this使用
    
  })
},

beforeRouteEnter 方法与mounted方法同级,且将mounted方法中代码注释,避免首次进入,方法执行2次。(造成生命周期失效的情况一种是使用了keep-alive,另外一种就是弹窗了。)

 

2、路由带参跳转至b界面,b界面有数据,当刷新b界面,数据消失问题

      解决方法:

        在跳转之前将参数存入缓存中,然后再新界面从缓存中取数据

在A界面中进行跳转

/** 点击表格数据进行跳转 */
cellClick(row, column, cell, event){
  let that = this;
  let object = { detail: row, projectStatus:this.projectStatus}
  localStorage.setItem("params",JSON.stringify(object)); //设置name为john
  // 跳转到详情界面
  that.$router.push({ path: '/overviewDetail',name: 'overviewDetail')
},

在B界面中进行取值(在生命周期或路由钩子函数中都可以)

beforeRouteEnter(to,from,next){
  next((vm)=>{
    vm.list = JSON.parse(localStorage.getItem('params')).detail
    vm.projectStatus = JSON.parse(localStorage.getItem('params')).projectStatus
   })
},

再刷新界面,数据依然还在。原因分析:

路由携带参数,当刷新界面的时候,携带的参数就没有了。这里必须要有跳转这个动作,才会有参数,如果跳转后,直接刷新界面,这时候是没有跳转动作的,参数也就没有了。所以需要将数据存入缓存中。

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值