• Vue刷新当前路由


    前言

    开发项目的时候突然接到了这个需求,实验过后,解决方法也蛮多种,下面就讲下常规的几种方案

    1.改变router-view中的key值

    通过改变router-view中的key值,来达到刷新组件的目的

    <router-view :key="activeDate"></router-view>
    
    this.activeDate = new Date()

    2.给 router-view 标签添加 v-if

    通过$nextTick(),协助实现。先把 <router-view /> 移除,移除后再重新添加,达到刷新当前页面的功能。

    <router-link :to="url" @click.native="refresh">页面1</router-link>
    <router-view v-if="flag"/>
    
    <script>
    export default {
        data () {
            return {
               flag: true 
            }
        },
        methods: {
          refresh() {
              this.flag= false // 通过v-if移除router-view节点
              this.$nextTick(() => {
                  this.flag= true // DOM更新后再通过v-if添加router-view节点
              })
           }
        }
    }
    </script>

    3.新建空白页,也是种不错的方案

    refresh.vue //新建页面
    <script>
        export default {
            beforeRouteEnter(to, from, next) {
                next(vm => {
                    vm.$router.replace(from.path)
                })
            }
        }
    </script>
    
    demo.vue //然后在需要的页面调用
    this.$router.replace({
          path: '/refresh',
          query: {
             t: Date.now()
            }
    })

    资源搜索网站大全 https://www.renrenfan.com.cn 广州VI设计公司https://www.houdianzi.com

    4.query传值 watch监听页面$route变化然后更新

    5.provide / inject 组合

    6.取巧的办法 <router-view ref="chartView"></router-view>

    定义ref,然后调用相对应的方法,最好给每个页面都提供相同的方法

    this.$refs.chartView.refresh()

    就解决了点击当前路由没有刷新的问题

  • 相关阅读:
    Python学习笔记5
    Python字符串的encode与decode
    python代码`if not x:` 和`if x is not None:`和`if not x is None:`
    关于sys.argv
    Python学习笔记4
    Python学习笔记3
    Python学习笔记2
    生产者消费者_测试
    进程管理
    软件包管理
  • 原文地址:https://www.cnblogs.com/xiaonian8/p/14092533.html
Copyright © 2020-2023  润新知