位置: 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)

  • 【房产公证】房产买卖公证怎么办理呢?(房产公证怎么收费标准)

    【房产公证】房产买卖公证怎么办理呢?(房产公证怎么收费标准)

  • 华为手表来电不震动怎么设置(华为手表来电不响铃的原因)

    华为手表来电不震动怎么设置(华为手表来电不响铃的原因)

  • iphone光圈怎么调出来(iphone怎么调节光圈)

    iphone光圈怎么调出来(iphone怎么调节光圈)

  • 商家不退款怎么投诉(商家不退款怎么投诉最有效)

    商家不退款怎么投诉(商家不退款怎么投诉最有效)

  • 三d打印技术是什么意思(三D打印技术是哪个国家发明的)

    三d打印技术是什么意思(三D打印技术是哪个国家发明的)

  • 国产屏幕和原装区别(国产屏幕和原装屏幕有什么区别苹果)

    国产屏幕和原装区别(国产屏幕和原装屏幕有什么区别苹果)

  • 荣耀30安兔兔跑分多少(荣耀30s安兔兔)

    荣耀30安兔兔跑分多少(荣耀30s安兔兔)

  • 键盘上下左右键移动不了格子位置怎么办(键盘上下左右键不动怎么办)

    键盘上下左右键移动不了格子位置怎么办(键盘上下左右键不动怎么办)

  • ipad型号a1983是几寸(ipad型号a1983是哪一款)

    ipad型号a1983是几寸(ipad型号a1983是哪一款)

  • 一次性电子烟电池可以充电不(一次性电子烟电池)

    一次性电子烟电池可以充电不(一次性电子烟电池)

  • c8817d是华为什么型号(华为c8816d是什么型号)

    c8817d是华为什么型号(华为c8816d是什么型号)

  • 数据字典的主要用途(数据字典的主要内容是对数据流程图)

    数据字典的主要用途(数据字典的主要内容是对数据流程图)

  • 淘宝聊天信息发不出去(淘宝聊天信息发不出去,显示橙色感叹号)

    淘宝聊天信息发不出去(淘宝聊天信息发不出去,显示橙色感叹号)

  • 荣耀20应用建议怎么关闭(荣耀20应用建议在哪里)

    荣耀20应用建议怎么关闭(荣耀20应用建议在哪里)

  • 快手怎么顶置作品(快手怎么顶置作品主页)

    快手怎么顶置作品(快手怎么顶置作品主页)

  • 快手作品b类是什么原因(快手作品c类是什么意思)

    快手作品b类是什么原因(快手作品c类是什么意思)

  • 滴答限制接单怎么解除(滴答出行接单有限制的吗?)

    滴答限制接单怎么解除(滴答出行接单有限制的吗?)

  • 闲鱼怎么改密码(如何更改闲鱼密码)

    闲鱼怎么改密码(如何更改闲鱼密码)

  • 苹果相册回收站在哪里(苹果相册回收站怎么找)

    苹果相册回收站在哪里(苹果相册回收站怎么找)

  • 抖音互不关注能私信吗(抖音互不关注能看到作品吗)

    抖音互不关注能私信吗(抖音互不关注能看到作品吗)

  • 刷宝如何换钱(刷宝的钱怎么提现)

    刷宝如何换钱(刷宝的钱怎么提现)

  • 钢筋等级符号怎么打(钢筋等级符号怎么在电脑上打出来cad)

    钢筋等级符号怎么打(钢筋等级符号怎么在电脑上打出来cad)

  • 抖音怎么批量删除点赞(抖音怎么批量删除作品)

    抖音怎么批量删除点赞(抖音怎么批量删除作品)

  • word选定全文快捷键(word快速选择全文)

    word选定全文快捷键(word快速选择全文)

  • Electron打包的桌面应用程序,运行中程序黑屏、白屏等渲染进程崩溃问题解决(electron 打包)

    Electron打包的桌面应用程序,运行中程序黑屏、白屏等渲染进程崩溃问题解决(electron 打包)

  • 个税系统更正申报可以更正几次
  • 资金账簿印花税减半政策
  • 税控技术服务费280每年都可以抵
  • 餐饮业厨房设备专票可以抵税吗
  • 预收账款确认收入
  • 合同资产和合同负债属于什么科目
  • 公司租用个人房屋如何记账
  • 预付款可以抵扣进度款吗
  • 怎么确定开票项目是否属于经营范围
  • 所得税多交怎么调整
  • 可以抵扣的税控发票
  • 处置子公司全部股权会计处理 企业会计准则
  • 印花税计入哪个费用
  • 税务年检流程
  • 现金折扣为什么计入主营业务收入
  • 建筑劳务公司的工资计入什么科目
  • 法人的往来款可以转为实收资本吗?
  • 冲销预付账款后该如何做账务处理呢?
  • 收到违约金应缴增值税吗
  • 收到汇票的账务处理
  • 主体资格的法律规定
  • 自制发票和增值税发票的区别是什么?
  • 开加工费的发票该如何抵扣?
  • 辞退福利税前扣除标准
  • 减免税费期末如何结转
  • 做内账有风险还是做外账有风险
  • 低税负销售激励策略的设计与案例!
  • 在会计实务中财务报表附注的披露方法不包括
  • 权利许可证照印花税每个月都要交吗
  • 工程管理咨询费计入什么科目
  • 什么叫经济作物和粮食作物
  • 如何输入特殊符号带圈数字11
  • u盘无法格式化为NTFS
  • 反映企业利润的指标有
  • 小规模旅游业的会计分录怎么写
  • 工资结算单什么时候签
  • cefres.dll是什么
  • php零基础入门教程
  • 哈利法塔里面有什么
  • 若依vue教程
  • 微信php接口
  • return 重定向
  • 劳动法中迟到半小时扣多少钱
  • 母公司和子公司可以一起投标吗
  • 出口退税率为0要补增值税吗
  • 小规模开工程款几个点
  • 哪些增值税专用发票能抵扣进项税
  • PostgreSQL 查看数据库,索引,表,表空间大小的示例代码
  • 注销公司流程超详细
  • 企业支付的一次性就业补助金
  • 金税盘抵扣的结转会计分录
  • 一个人可以有两张同一个银行的卡吗
  • 贸易公司成本如何计算
  • 什么是年化收益和绝对利率
  • 员工上班的停车费谁出
  • 公司验资报告多少钱
  • 处理报废的固定资产账务处理
  • 免税苗木普通发票抵扣怎么在申报填写
  • 手机开个人发票怎么开
  • 银行承兑汇票去哪个银行承兑
  • win8经常弹出转到电脑设置
  • ubuntu怎么更改用户名
  • safari 快捷键
  • mac文本编辑怎么删除
  • win7如何删除网络上的其它计算机
  • ubuntu误删除内核
  • linux scp远程拷贝文件及文件夹
  • centos7网络配置文件在哪
  • XP系统升级WIN7系统
  • windows打开
  • win10屏幕刷新率只有60
  • 简述android应用的常用开发模式及其优缺点
  • python编程入门指南
  • 使用nodejs连接openai超时
  • jquery提供了三种删除节点的方法,分别是什么
  • android 控件居中
  • js中的eval
  • 购房合同交契税怎么交
  • 准予扣除是什么意思
  • 企业收到上一年增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设