博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue项目刷新当前页面
阅读量:5269 次
发布时间:2019-06-14

本文共 899 字,大约阅读时间需要 2 分钟。

场景:

有时候我们在vue项目页面做了一些操作,需要刷新一下页面。

解决的办法及遇到的问题:

  1. this.$router.go(0)。这种方法虽然代码很少,只有一行,但是体验很差。页面会一瞬间的白屏,体验不是很好
  2. vue-router重新路由到当前页面,页面是不进行刷新的。
  3. location.reload()。这种也是一样,画面一闪,体验不是很好

推荐解决方法:

provide / inject 组合

原理:允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效

App.vue,声明reload方法,控制router-view的显示或隐藏,从而控制页面的再次加载。

<template>  <div id="app">    <router-view v-if="isRouterAlive"></router-view>  </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>

在需要用到刷新的页面。在页面注入App.vue组件提供(provide)的 reload 依赖,在逻辑完成之后(删除或添加...),直接this.reload()调用,即可刷新当前页面。

注入reload方法

1546356-20181213132631413-599091649.png

直接调用this.reload

1546356-20181213132638299-680247852.png

参考文章

原文地址:

转载于:https://www.cnblogs.com/qixidi/p/10113454.html

你可能感兴趣的文章
python使用input()来接受字符串时一直报错“xxx is not defined”
查看>>
2016.7.15 落实字符及字符串读取的结果
查看>>
他看了几千份技术简历,愿意把技术简历的秘籍传授给你
查看>>
Struts2学习(三)
查看>>
使用电子邮件模板
查看>>
Callable和Runnable和FutureTask
查看>>
GitHub 多人协作开发 三种方式:
查看>>
java Dialog
查看>>
文本域添加编辑器
查看>>
Yum安装MySQL以及相关目录路径和修改目录
查看>>
java获取hostIp和hostName
查看>>
RxJava结合Retrofit和Volley简单比较
查看>>
iOS 企业版 安装失败 原因
查看>>
ThreadLocal 理解
查看>>
关于web服务器和数据库的各种说法(搜集到的)
查看>>
一个 forceLayout() 和 requestLayout() 的测试
查看>>
【转】使用js触发事件
查看>>
《TCP/IP 详解 卷一》读书笔记 -----第四章 ARP
查看>>
C# Stream 和 byte[] 之间的转换
查看>>
UDP的最大报文长度
查看>>