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

  • 广州市教育局:全市中小学(高三除外)下周暂不恢复线下教学

    广州市教育局:全市中小学(高三除外)下周暂不恢复线下教学

  • 京东慧采平台入驻哪里办(京东慧采平台入驻渠道)

    京东慧采平台入驻哪里办(京东慧采平台入驻渠道)

  • 华为nova5的充电速度(华为nova5的充电器详细展示)

    华为nova5的充电速度(华为nova5的充电器详细展示)

  • 苹果se2中国上市时间(苹果se2上市时间)

    苹果se2中国上市时间(苹果se2上市时间)

  • 支付宝健康宝暂无信息怎么回事(健康宝提示)

    支付宝健康宝暂无信息怎么回事(健康宝提示)

  • 主动lpm支持要不要开启

    主动lpm支持要不要开启

  • 华为员工买手机有内部价吗(华为员工买手机有内部直购吗)

    华为员工买手机有内部价吗(华为员工买手机有内部直购吗)

  • 应用内安装其他应用是什么意思(应用内安装其他应用权限在哪)

    应用内安装其他应用是什么意思(应用内安装其他应用权限在哪)

  • 小米体脂秤和体重秤区别(小米体脂秤和体重秤家用哪个更好)

    小米体脂秤和体重秤区别(小米体脂秤和体重秤家用哪个更好)

  • 60v锂电池充满电电压是多少(60V锂电池充满电是多少)

    60v锂电池充满电电压是多少(60V锂电池充满电是多少)

  • 华为截图怎么截照片(华为截图怎么截一部分)

    华为截图怎么截照片(华为截图怎么截一部分)

  • 嘀嗒音乐为什么不能用了(嘀嗒音乐下载不了歌曲)

    嘀嗒音乐为什么不能用了(嘀嗒音乐下载不了歌曲)

  • 美版xsmax无锁是双卡吗(美版xsmax无锁是什么意思)

    美版xsmax无锁是双卡吗(美版xsmax无锁是什么意思)

  • 手机没电关机对电池有影响么(手机没电关机对手机有影响吗)

    手机没电关机对电池有影响么(手机没电关机对手机有影响吗)

  • 为什么淘宝性别改不了(为什么淘宝性别是保密改不了)

    为什么淘宝性别改不了(为什么淘宝性别是保密改不了)

  • 华为平板m7上市时间(华为平板m7什么时候上市时间)

    华为平板m7上市时间(华为平板m7什么时候上市时间)

  • pr怎么弄动态字幕(pr怎样做动态字幕)

    pr怎么弄动态字幕(pr怎样做动态字幕)

  • soul头像右上角绿点(soul中头像右下角为什么有个小绿点)

    soul头像右上角绿点(soul中头像右下角为什么有个小绿点)

  • 喜马拉雅怎么看小说(喜马拉雅怎么看直播回放)

    喜马拉雅怎么看小说(喜马拉雅怎么看直播回放)

  • ppt基本维恩图在哪儿(word基本维恩图)

    ppt基本维恩图在哪儿(word基本维恩图)

  • 苹果11pro和11的区别(苹果11pro与11哪个好)

    苹果11pro和11的区别(苹果11pro与11哪个好)

  • 抖音可以加字幕吗(抖音可以加字幕嘛)

    抖音可以加字幕吗(抖音可以加字幕嘛)

  • 云视通怎么添加摄像头

    云视通怎么添加摄像头

  • 小影如何配音(小影后期配音怎么变声)

    小影如何配音(小影后期配音怎么变声)

  • 本地存储(Local Storage) 和 会话存储(Session Storage)(本地存储localstorage没有拿到最新值)

    本地存储(Local Storage) 和 会话存储(Session Storage)(本地存储localstorage没有拿到最新值)

  • Python元类的使用(python元数据)

    Python元类的使用(python元数据)

  • 小规模销售收入要做销项税额吗
  • 车船使用税怎么网上缴费
  • 一般纳税人服务费税率
  • 2023年增值税税率表
  • 顺流交易为什么调整被投资方
  • 开私家车出差如何报销差旅费
  • 进销存工作流程
  • 其他应收款怎样做平
  • 印花税的计税依据怎么算公式
  • 退增值税需要多久
  • 没经营的个体户营业执照怎么注销
  • 维修企业主营项目有哪些
  • 报损失怎么报
  • 无形资产后续支出计入什么科目
  • 当月费用没结账的能先预估计提吗?
  • 印花税申报表如何填写
  • 服务业的地税是什么税
  • 外贸出口企业城市排名
  • 实际缴纳增值税税额是什么意思
  • 印花税税基含不含增值税
  • 金税三期定期定额是什么
  • 工程施工直接费用包括哪些
  • 2019新版利润表填表说明
  • 无偿使用固定资产如何缴税
  • 已经抵扣增值税专用发票对方要换票怎么办
  • 短期借款应付利息列报
  • iphone系统推送
  • dotnetfx.exe
  • PHP:pcntl_signal_dispatch()的用法_PCNTL函数
  • 劳动保护经费
  • 当月进项税额转出当月申报吗
  • 年中建账年初余额怎么录入
  • php gd gd2
  • php的ajax
  • 给客户开的发票,在邮寄过程中丢了怎么办?
  • yolov3图像识别
  • ChatGPT及相关产品体验与研究
  • nodejs写后端接口
  • 补开发票对公司有什么影响
  • 小规模纳税人没有收入怎么报税
  • 承租人经营租赁账务处理
  • 报关代理费计入什么科目
  • 建筑业为什么要报统计局
  • vue多平台
  • 购入固定资产的预算会计账务处理
  • 2000元以内最强二手游戏笔记本
  • 劳动保护的各项支出列入工资总额的范围吗
  • 法人向公司账户打款合法吗
  • 长期股权投资亏损冲减顺序
  • 与其他企业联营
  • 差旅费的现金流
  • 金税盘的初始密码一般是多少
  • 营业外支出的性质
  • 新准则会计科目解释
  • sql分几类
  • 利用的英文
  • 错误的英文
  • mysql的随机函数
  • 浅谈mysql explain中key_len的计算方法
  • win10预览版21390
  • Win10任务栏天气怎么关闭
  • safeplugin是什么软件
  • windows7显示桌面的操作方法
  • centos 搜索
  • win8系统怎么设置密码登陆
  • 利用图片密码登录微信
  • linux init1
  • cocos2dx-3.2+lua 启动项目小技巧
  • 90后的毕业照
  • 卸载安装软件
  • node.js go
  • css网站布局实录 pdf
  • nodejs webapp
  • jquery根据class
  • unity编译速度吃什么硬件?
  • 临沂市有哪些国企央企
  • 贵州省地方税务局历任纪检组长马平
  • 对税务总局党组织的评价
  • 广东省国家税务总局稽查局局长
  • 税务征收社保费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设