位置: IT常识 - 正文

【Vue】实现当前页面刷新的四种方法(vue获取当前行)

编辑:rootadmin
【Vue】实现当前页面刷新的四种方法 目录前言方法一:location.reload方法二:$router.go(0)方法三:provide、inject和$nextTick方法四:创建空白页前言

推荐整理分享【Vue】实现当前页面刷新的四种方法(vue获取当前行),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue实际项目,vue跳出当前方法,vue实现实时数据,实现vuex,vue 实现,vue 实现,实现vuex,vue 实现,内容如对您有帮助,希望把文章链接给更多的朋友!

这两周在写一个后台管理,每次调用接口实现增删改查的过程中,都需要刷新当前页面或者刷新数据。如果手动点击浏览器的小圈圈不仅麻烦、用户体验感极差,而且不会真的有人让用户手动刷新叭。。。这个问题可以称得上是前端的bug了。那么,顺着这个问题,一通搜寻下来,整理了几个刷新当前页面的方法,如下:

方法一:location.reload

学习JS的过程中,大家应该都了解过Browser 对象,其中Location 对象是 window 对象的一部分。Location 对象中有一个方法,也就是reload()方法,用于刷新当前文档,类似于浏览器上的刷新页面按钮。

代码测试:

<template> <div class="hello"> <img src="../imgs/01.jpg" alt="" /> <button @click="refresh">点击刷新页面</button> </div></template><script>export default { name: "HelloWorld", methods: { refresh() { location.reload(); }, },};</script><style scoped>.hello img { width: 800px; display: block; margin-bottom: 20px;}</style>

效果展示:

缺点: 想必大家都能看出来了叭,一闪一闪亮晶晶~

方法二:$router.go(0)

这种方法大家应该比较熟悉了,学过vue路由跳转的都知道$router.go()的作用:

> this.$router.go(-1):后退+刷新;> this.$router.go(0):刷新;> this.$router.go(n) :前进n个页面

这个方法等同于上面的location.reload,也是利用浏览器的刷新功能,疯狂按F5刷新。。。

代码测试:

<template> <div class="hello"> <img src="../imgs/02.jpg" alt="" /> <button @click="refresh">点击刷新页面</button> </div></template><script>export default { name: "HelloWorld", methods: { refresh() { this.$router.go(0); }, },};</script><style scoped>.hello img { width: 800px; display: block; margin-bottom: 20px;}</style>

效果展示:

缺点: 肉眼可见!会出现一瞬间的空白页面,用户体验不好。

方法三:provide、inject和$nextTick

首先,我们来认识一下这组选项:

【Vue】实现当前页面刷新的四种方法(vue获取当前行)

provide 选项应该是:一个对象或返回一个对象的函数。 inject 选项应该是:一个字符串数组,或 一个对象,对象的 [key] 是本地的绑定名。

在学习vue父子组件通信的时候,大家应该都知道这是用来干嘛的了:父组件通过provide向子组件传递数据,子组件通过inject获取数据。 那么$nextTick又是干哈的呢? $nextTick 又说是Vue的另一个生命周期函数:当你修改完数据(数据更新了)之后,Vue帮你操作完DOM之后,把真实的DOM放入页面了(Dom更新渲染),Vue再帮我们调用这个函数(可以监听DOM元素被修改后,在该函数中写你要执行的逻辑)。 接下来,我们来组合一下思路: 我们在父组件中通过给<router-view></router-view>添加v-if来控制子组件销毁和重建的方式,从而控制页面的再次加载。然后在需要当前页面刷新的页面中注入 reload 依赖,直接通过this.reload来调用刷新。

代码测试:

App组件:

<template> <div id="app"> <HelloWorld v-if="isReload" /> </div></template><script>import HelloWorld from "./components/HelloWorld.vue";export default { name: "App", data() { return { isReload: true, }; }, components: { HelloWorld, }, provide() { return { msg: "未刷新", reload: this.reload, }; }, methods: { async reload() { this.isReload = false; await this.$nextTick(); this.isReload = true; }, },};</script>

子组件:

<template> <div class="hello"> <img src="../imgs/03.jpg" alt="" /> <p>{{ msg }}</p> <button @click="refresh">点击刷新页面</button> </div></template><script>export default { inject: ["reload", "msg"], name: "HelloWorld", methods: { refresh() { this.msg = "我刷新啦!"; this.reload; }, },};</script><style scoped>.hello img { width: 800px; display: block; margin-bottom: 20px;}</style>

效果展示:

缺点: 可以看到页面不会刷白,但是这种方法也有很多弊端。我们都知道Vue 在修改数据后,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图更新。这样容易造成事件循环;并且使用provide和inject也涉及到组件的多层级通信,有些繁琐。

方法四:创建空白页

这个方法…我此前从没用过,就是利用$router.replace路由跳转到一个空白页面,然后在空白页面中立即执行$router.replace切换到原来的页面。$router.replace不会向 history 添加新纪录,当路由跳转得比较快的时候,不会出现一瞬间的空白页。

代码测试:

空白页:

<template> <div class="hello"></div></template><script>export default { name: "HelloTest", created() { this.$router.replace(this.$route.query.redirect); },};</script><style scoped></style>

需要刷新的页面:

<template> <div class="hello"> <img src="../imgs/04.jpg" alt="" /> <button @click="refresh">点击刷新页面</button> </div></template><script>export default { name: "HelloWorld", methods: { refresh() { this.$router.replace(`/blank?redirect=${this.$route.fullPath}`); }, },};</script><style scoped>.hello img { width: 800px; display: block; margin-bottom: 20px;}</style>

路由:

const router = new VueRouter({ mode: 'history', routes: [{ path: "/", component: () => import('../components/HelloWorld.vue'), meta: { keepAlive: true, } }, { path: "/blank", component: () => import('../components/HelloTest.vue'), meta: { keepAlive: true, } }]})

效果展示:

缺点: 大家应该可以看到地址栏的变化。。。

以上就是比较常见的当前页面刷新的方法,各有优缺点,根据应用场景使用。 如有误,请指正!

本文链接地址:https://www.jiuchutong.com/zhishi/299529.html 转载请保留说明!

上一篇:【Hadoop/Java】基于HDFS的Java Web网络云盘(hadoop java)

下一篇:Springboot怎么实现restfult风格Api接口(springboot -d)

  • 如何文艺而又优雅的辞职(如何文件加密)(如何文艺范)

    如何文艺而又优雅的辞职(如何文件加密)(如何文艺范)

  • 天猫半日达是快递还是外卖(天猫半日达是快递送吗)

    天猫半日达是快递还是外卖(天猫半日达是快递送吗)

  • 荣耀x10如何更换字体(荣耀x10如何更换锁屏壁纸)

    荣耀x10如何更换字体(荣耀x10如何更换锁屏壁纸)

  • 电脑Windows7向右的斜杠怎么打(win7右键在左边)

    电脑Windows7向右的斜杠怎么打(win7右键在左边)

  • 钉钉连麦怎么连不上(钉钉连麦怎么连不上视频)

    钉钉连麦怎么连不上(钉钉连麦怎么连不上视频)

  • airpod连接后还是外放(airpods显示已连接,但是没有声音)

    airpod连接后还是外放(airpods显示已连接,但是没有声音)

  • doc怎么转word文档(doc转word文档怎么弄)

    doc怎么转word文档(doc转word文档怎么弄)

  • 苹果xs max尺寸(苹果XS max尺寸多大)

    苹果xs max尺寸(苹果XS max尺寸多大)

  • 红米note8pro安兔兔跑分多少(安兔兔红米note8pro)

    红米note8pro安兔兔跑分多少(安兔兔红米note8pro)

  • 修改了微信号以前的联系人和聊天内容会没有的吗(修改了微信号以前删除的聊天记录还能恢复吗)

    修改了微信号以前的联系人和聊天内容会没有的吗(修改了微信号以前删除的聊天记录还能恢复吗)

  • 手机上半部分发热是怎么回事(手机上半部分发热怎么解决)

    手机上半部分发热是怎么回事(手机上半部分发热怎么解决)

  • 苹果笔记本截图快捷键ctrl加什么

    苹果笔记本截图快捷键ctrl加什么

  • 小米m1908c3ke是什么型号(小米m1908c3KE是什么型号)

    小米m1908c3ke是什么型号(小米m1908c3KE是什么型号)

  • nex3s和nex3区别(nex3跟nex3s有什么区别)

    nex3s和nex3区别(nex3跟nex3s有什么区别)

  • 荣耀30s正式开售时间(荣耀30s预售价格)

    荣耀30s正式开售时间(荣耀30s预售价格)

  • iphone8内存都有哪些(iphone8内存有几种)

    iphone8内存都有哪些(iphone8内存有几种)

  • 苹果7plus多重(iphone 7plus重量多少克)

    苹果7plus多重(iphone 7plus重量多少克)

  • 冯诺依曼计算机的基本原理(冯诺依曼计算机的基本思想)

    冯诺依曼计算机的基本原理(冯诺依曼计算机的基本思想)

  • 华为手机录屏为啥是黑屏(华为手机录屏为什么只有声音没有图像)

    华为手机录屏为啥是黑屏(华为手机录屏为什么只有声音没有图像)

  • 微信发10分钟以上视频(微信发10分钟以内的视频)

    微信发10分钟以上视频(微信发10分钟以内的视频)

  • 哔咔漫画加载慢怎么解决(哔咔漫画太卡怎么解决)

    哔咔漫画加载慢怎么解决(哔咔漫画太卡怎么解决)

  • html网页乱码怎么修改(html文件乱码了怎么办)

    html网页乱码怎么修改(html文件乱码了怎么办)

  • qq音乐最近常听怎么改(qq音乐最近常听一直不变)

    qq音乐最近常听怎么改(qq音乐最近常听一直不变)

  • 咸鱼怎么举报(举报咸鱼怎么举报)

    咸鱼怎么举报(举报咸鱼怎么举报)

  • 小米手机怎么查询激活时间(小米手机怎么查询是不是全新的)

    小米手机怎么查询激活时间(小米手机怎么查询是不是全新的)

  • js获取当前日期,格式 YYYY-MM-DD HH:mm:ss(js获取当前日期的函数)

    js获取当前日期,格式 YYYY-MM-DD HH:mm:ss(js获取当前日期的函数)

  • 价税分离计算公式有哪些
  • 如何进行个人所得税认定
  • 印花税需要计提吗?怎么做会计分录
  • 出租房屋收取的水电费如何记账
  • 开票系统怎么切换到数字账户
  • 生产企业退税计算方法怎么选择
  • 营业外支出为负数怎么处理
  • 申报个税是按照当月工资,做账时候发的是上月工资
  • 银行回单可以做收入吗
  • 汇算清缴产生的企业所得税如何做账
  • 土地增值税预缴最新税法规定
  • 虚假会计凭证的处罚
  • 资本公积在现金流量表哪里体现
  • 技术开发免税收益方
  • 安装工程通常有哪些工种
  • 公司亏损没有收入怎么办
  • 2年前的增值税发票能不能用
  • 什么叫项目所在地
  • 银行非保本理财420天有风险吗
  • 无偿赠送的原材料怎么处理
  • 职工廉租房怎么办理
  • mac怎么设置桌面组件
  • 如何生成系统图
  • 支付宝提现到企业账户 怎么开票
  • 出租厂房折旧可以税前扣除
  • php防止再次刷新
  • 股权处置的形式
  • launcher process
  • 出口退税率的调整方法
  • php利用数组完成党员信息表
  • 增值税和所得税重复交了吗
  • 预定义变量是什么
  • mount.nfs an incorrect mount
  • 公司租赁个人车辆怎么开发票
  • 其他非流动资产是会计科目吗
  • 错误日志怎么修复
  • phpcms怎么用
  • 新建会计帐套怎么建
  • 金税盘怎么增加收款人和复核人
  • 发票没拿回来可以报销吗
  • 工程发票需要备注吗
  • python的series
  • oracle 删除用户下所有表
  • 职工意外险怎么记账
  • 会计核算的职能包括哪些
  • 绩效工资扣款违法么?
  • 火车票可以抵扣进项吗
  • 申报要补税怎么办
  • 企业持有住房税费
  • 固定资产没有折旧完要转走会计科目
  • 委托收款的业务场景有哪些
  • 微信提现手续费1000扣多少
  • 进口货物例题
  • 海关进口代理公司名称
  • 购建时间是什么意思
  • MySQL5.7 windows二进制安装教程
  • sql 清除日志
  • sqlserver获取当前年
  • win2000 xp
  • windows2008版本区别
  • ubuntu安装配置静态ip地址
  • WindowsPE与WindowsRE有什么区别
  • win7系统出现蓝屏怎么进去桌面
  • win10创建系统还原点有什么用
  • 删除linux系统命令
  • 使用时间
  • css控制html
  • 处理判断字符串是否相等
  • unity引擎工具
  • JavaScript基础教程
  • 关于翡翠手镯知识
  • js点击按钮实现登陆网页
  • 江苏省增值税专用发票怎么开
  • 电子税务局校验码
  • 当期免抵退税不得免征和抵扣税额公式
  • 国税局和税务局合并
  • 河南林州在哪三省交界处
  • 地方税务局属于地市级还是副省级
  • 双公开双反馈什么意思
  • 医保电子凭证怎么激活
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设