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

  • 一个手机可以用两个抖音号吗(一个手机可以用两个支付宝吗)

    一个手机可以用两个抖音号吗(一个手机可以用两个支付宝吗)

  • win10防火墙有必要开吗(win10防火墙好用吗)

    win10防火墙有必要开吗(win10防火墙好用吗)

  • 双层pdf和单层pdf区别(双层PDF和单层PDF的大小)

    双层pdf和单层pdf区别(双层PDF和单层PDF的大小)

  • 华为手机截屏图片在哪个文件夹(华为手机截屏图片怎么删除不了)

    华为手机截屏图片在哪个文件夹(华为手机截屏图片怎么删除不了)

  • 联想usb启动快捷键(联想usb启动快捷键是哪个)

    联想usb启动快捷键(联想usb启动快捷键是哪个)

  • 抖音的作品为什么别人看不到(抖音的作品为什么会重合在一起)

    抖音的作品为什么别人看不到(抖音的作品为什么会重合在一起)

  • pdf档是什么意思(pdf文档格式是啥意思)

    pdf档是什么意思(pdf文档格式是啥意思)

  • mate20pro是双扬声器吗(mate20pro双扬声器没有声音)

    mate20pro是双扬声器吗(mate20pro双扬声器没有声音)

  • 刘海屏手机都有哪几款(刘海屏手机都有哪几款苹果)

    刘海屏手机都有哪几款(刘海屏手机都有哪几款苹果)

  • ip是面向连接的协议吗(ip是面向连接的什么)

    ip是面向连接的协议吗(ip是面向连接的什么)

  • 怎么设置文档16开纸(怎么设置文档自动保存)

    怎么设置文档16开纸(怎么设置文档自动保存)

  • 关机后来电会有提示吗(关机后来电会有记录吗)

    关机后来电会有提示吗(关机后来电会有记录吗)

  • vivo手机的猜你喜欢怎么关(vivo手机的猜你喜欢怎么关闭)

    vivo手机的猜你喜欢怎么关(vivo手机的猜你喜欢怎么关闭)

  • 抖音的密码怎么解(抖音的密码怎么放)

    抖音的密码怎么解(抖音的密码怎么放)

  • 苹果xsmax双卡双待吗(苹果xsmax双卡双待怎么打电话)

    苹果xsmax双卡双待吗(苹果xsmax双卡双待怎么打电话)

  • oppoa57有没有按键灯(oppoa57按键怎么设置)

    oppoa57有没有按键灯(oppoa57按键怎么设置)

  • 华为智慧能力有啥用(华为智慧能力有什么)

    华为智慧能力有啥用(华为智慧能力有什么)

  • 手机怎么开淘宝店铺(手机怎么开淘宝网店)

    手机怎么开淘宝店铺(手机怎么开淘宝网店)

  • 抖音中321那种视频怎么做(抖音323是什么)

    抖音中321那种视频怎么做(抖音323是什么)

  • 抖音看不了发表时间吗(抖音发布看不见)

    抖音看不了发表时间吗(抖音发布看不见)

  • 快手标题怎么写上热门(快手标题怎么写吸引人励志)

    快手标题怎么写上热门(快手标题怎么写吸引人励志)

  • 方舟编译器怎么用(方舟编译器怎么安装)

    方舟编译器怎么用(方舟编译器怎么安装)

  • oppo手机震动怎么关掉(oppo手机震动怎么调)

    oppo手机震动怎么关掉(oppo手机震动怎么调)

  • 抖音短视频制作工具有哪些(怎么抖音短视频制作)

    抖音短视频制作工具有哪些(怎么抖音短视频制作)

  • class10以上的sd卡是什么意思(class10以上的sd卡有哪些)

    class10以上的sd卡是什么意思(class10以上的sd卡有哪些)

  • Win10 LTSC 2021(长期服务频道)正式版发布: 附MSDN官方ISO纯净镜像下载

    Win10 LTSC 2021(长期服务频道)正式版发布: 附MSDN官方ISO纯净镜像下载

  • times命令  显示进程累计时间(timestamp 0)

    times命令 显示进程累计时间(timestamp 0)

  • 所得税费用的计提
  • 计提所得税会计处理
  • 公司注册资本认缴
  • 企业困难有哪些
  • 电子承兑转出后银行有凭证吗
  • 统一企业员工
  • 未达起征点的税金如何做账
  • 小微企业增值税优惠政策最新2023
  • 现金股利什么时候发放
  • 待摊费用是
  • 给评委发酬劳怎么扣税?
  • 预缴增值税 已交税金
  • 抵扣上月留抵税额的分录
  • 应收账款的借方表示增加还是减少
  • 全额拨款事业单位工会经费来源
  • 中央空调 付款
  • 税收分类编码选错了没事吧
  • 有进项无销项会计分录
  • 固定资产一次性折旧政策2023
  • 以前年度利润和当年净利润
  • 解放双手神器说说
  • 计提企业所得税费用会计分录
  • 固定资产计提折旧的方法
  • 年终奖发放与补发的区别
  • windows8.1下Apache+Php+MySQL配置步骤
  • 认缴制没有实资本会怎么样
  • ct.dll
  • windows无法验证显卡驱动的数字签名
  • php imagecopymerge
  • 固定资产减值损失属于什么科目
  • 应收票据年末计息的分录
  • 职工福利费用怎么入账
  • 毕业设计2022年幼儿园
  • vue快速入门与实战开发
  • php的time函数
  • 劳务费如何支付
  • 税控盘增值税发票怎么开
  • 行政性罚款怎么结转损益
  • 简易征收的进项税怎么处理
  • 在成本了核算工资怎么算
  • sql server ssrs
  • 织梦手机端
  • sql语句自动执行
  • 企业所得税资产总额季初季末怎么填
  • 软件即征即退开票信息与资料不符
  • 盈利能力还有什么能力
  • 计提资产减值准备时,借记的科目是
  • 收到的进项发票在哪里认证
  • 申报工资金额
  • 企业自查发现以什么为主
  • 发票不按实际数量单价开 但金额一致
  • 公司采购一直没有发票
  • 期初固定资产算收入吗
  • 美元利息结汇时结汇项目是什么
  • 银行转出去的账可以追回吗?
  • 交去年的企业所得税吗
  • 公司给非职工人员发工资
  • 劳动者权益包含哪些
  • 存储sql
  • mysql 5.7.11 winx64初始密码修改
  • macbook分屏功能
  • 破解浏览器内网教程
  • win8.1使用教程
  • win10系统如何打开
  • win10搭建ftp服务器的步骤
  • #pragma UNROLL 4
  • 混合痔疮怎么治疗最好方法 女性
  • about ContentProvider
  • sql怎么设置自增列
  • javascript的描述
  • python搜索功能
  • javascript要打开吗
  • javascript编程技术
  • 出口退税期限最长几个月以上
  • 何为价外费用
  • 税务被风控了多久才会解除
  • 北京市房山区限行范围
  • 区地税局会不会分到乡镇
  • 代账好做吗
  • 矿产资源税税率2020年
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设