一、页面刷新

1、window.location.reload();和this.$router.go(0)

偶尔页面会闪烁一下,用户体验不好

2、provide/inject :不会出现空白页面

App.vue中声明reload方法,是使用isRouterAlive来控制路由的显示和隐藏,从而实现当前页面再加载了一遍,实现了刷新

#   (1)在App.vue页面中声明reload方法:
<template>
    <div id="app">
        <router-view v-if='isRouterAlive' />
    </div>
</template>

<script>
export default {
    name: 'App',
    provide(){
        return{
            reload:this.reload
        }
    },
    data(){
        return{
          isRouterAlive:true,
        }
    },
    methods:{
        reload(){
          this.isRouterAlive = false ;
          this.$nextTick(function(){
              this.isRouterAlive = true ;
          })
        }
    }
}
</script>
#  (2)需要刷新页面,注入 reload方法
<template>
    <div id='test'>
        <button @click='refresh()'>XXXXX</button>
    </div>
</template>
<script>
    export default{
        name:'test',
        inject:['reload'],   # 引入reload方法
        methods:{
            refresh(){  
                this.reload();   # 直接使用reload方法
            }
        }
    }
</script>

二、跳转方法:

1、导航式路由跳转:

<router-link to="/"></router-link>  

router-link(导航标签跳转) 解析后 是 a标签 ,可以通过 .router-link-active 更换样式,

# 可以通过tag属性 设置router-link的取代标签
<router-link to="/" tag="p"></router-link>    #router-link标签将会被p标签替换

2、编程式路由跳转:

this.$router.go(-1)         # 返回上一个记录
this.$router.push("/xxx")   # 跳转至某一页面
Logo

前往低代码交流专区

更多推荐