美文网首页前端
Vue中刷新当前页的几种方式

Vue中刷新当前页的几种方式

作者: 湘兰沅芷 | 来源:发表于2022-09-09 15:31 被阅读0次

    最推荐的解决方案。就是通过 v-if 控制 <router-view> 的显示,如果要刷新页面,则将 <router-view> 销毁再重建一次即可。具体实现代码如下:
    主要改造的就是 App.vue 文件

    <template>
        <div id="app">
            <RouterView v-if="isRouterAlive" />
        </div>
    </template>
    
    <script>
    export default {
        provide() {
            return {
                reload: this.reload
            }
        },
        data() {
            return {
                isRouterAlive: true
            }
        },
        methods: {
            reload() {
                this.isRouterAlive = false
                this.$nextTick(() => (this.isRouterAlive = true))
            }
        }
    }
    </script>
    

    通过 Vue 的 provide / inject ,将 App.vue 里的 reload() 方法注入到子页面里,这样在子页面里就可以通过这样的方式使用了。

    <script>
    export default {
        inject: ['reload'],
        methods: {
            func() {
                this.reload()
            }
        }
    }
    </script>
    

    当然还可以更极致一点,就是直接在 App.vue 里监听路由的变化,如果当前路由和上一个路由的 name 属性一样,则可以认为是刷新页面操作,自动执行 reload() 方法。

    <template>
        <div id="app">
            <RouterView v-if="isRouterAlive" />
        </div>
    </template>
    
    <script>
    export default {
        provide() {
            return {
                reload: this.reload
            }
        },
        data() {
            return {
                isRouterAlive: true
            }
        },
        watch: {
            $route: 'routeChange'
        },
        methods: {
            reload() {
                this.isRouterAlive = false
                this.$nextTick(() => (this.isRouterAlive = true))
            },
            routeChange(newVal, oldVal) {
                if (newVal.name == oldVal.name) {
                    this.reload()
                }
            }
        }
    }
    </script>
    

    这样的好处在于,如果是在同一个路由,但不同参数间的跳转,能实现自动刷新页面。例如商城系统里最常见的,从一个商品详情页跳转到另一个商品详情页,这个时候,路由其实是没变化的,变化的只是 params 或者 query ,就不需要手动再去执行注入的 reload() 方法了。

    相关文章

      网友评论

        本文标题:Vue中刷新当前页的几种方式

        本文链接:https://www.haomeiwen.com/subject/ehtznrtx.html