vue 使用afterEach判断后用widow.localtion.reload刷新问题

在vue项目中,遇到一个这样的问题:

A,B,C三个路由,A->B->C, 其中A->B每次进入都需要刷新, B和C可以来回多次切换并且B数据不刷新.

我的思路是:用keep-alive缓存组件, A->B时强制刷新页面.

实现A->B: 用afterEach判断to,from的name分别符合B和A时,用widow.localtion.reload()强制刷新B页面.

问题出现在了A->B中: 

以上思路实现的方法在Chrome和安卓机上没有问题,可以成功跳转到B页面并刷新,  但是在safari和IOS真机上都出现了A页面原地刷新,进入不到B中.

//A页面中的点击跳转行为

getCliam(){

  console.log('getCliam');

  this.$router.push('/claim/claimForm');

},

//main.js导航钩子函数

router.afterEach((to, from) => {

  if(to.name=='claimForm'&&from.name=='claimList'){

    console.log('afterEach')

    window.location.reload();

  }

})

 

哪位懂得大佬帮忙看下什么原因,难道有兼容性问题?或者以上不用跳转用keepAlive的一些处理方法实现A->B刷新新页面,B和C的都可以缓存?

 

非常感谢!


饮歌长啸
浏览 1025回答 1
1回答

慕姐4208626

页面跳转你为什么要刷新?进入 B 页面的时候判断一下来源,根据页面判断,是否将数据设置为默认值不就行了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript