Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >vue页面刷新_vue强制重置组件

vue页面刷新_vue强制重置组件

作者头像
全栈程序员站长
发布于 2022-11-03 09:00:46
发布于 2022-11-03 09:00:46
2.4K00
代码可运行
举报
运行总次数:0
代码可运行

vue页面刷新

首先我们都知道vue属于单页面应用,默认境况下是不会触发刷新页面操作的,所以这个时候就需要我们通过事件来触发reload()来达到刷新操作

接下来我就为大家介绍三种刷新页面的方法

1.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wiindow.location.reload([bForceGet])
该方法强迫浏览器刷新当前页面

bForceGet 可选参数,默认为false,从客户端缓存里取当前

true,则以get方式,从服务器端获取最新的页面,相当于页面f5刷新

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wiindow.location.replace(URL)

该URL参数未你所要跳转的地址,如果想实现当前页面刷新,你可以这样做

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wiindow.location.replace(location.href)

2.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.$router.go(0)

经常使用vue的小伙伴看到这个应该很熟悉吧,我们经常用它来实现前进后退,但别忘了它还可以实现自身页面刷新

3.

对于以上两种方法,虽然都可以实现页面刷新,但页面会刷的白一下,给用户的体验非常不好

3.

利用provide/inject组合方式是我目前觉得最好用的方法,下面我们就来详细介绍其用法

首先在我们的app.vue页面中设置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div id="app">
    <router-view v-if="isRouterAlive"></router-view>    
  </div>
</template>

<script>

export default {
  provide(){
    return{
      reload:this.reload //提供数据
    }
  },
  data() {
    return {
      isRouterAlive:true,
    }
  },
  methods: {
    reload(){
      this.isRouterAlive=false
      this.$nextTick(()=>{
        this.isRouterAlive=true
        console.log("确实刷新了")
      })
    }
  },
};

</script>

这里我来说明一下,我们的主体思路,我想可以通过视图的显隐来达到我们想要的刷新,所以我们就在这里声明了一个方法,先让视图消失随后又出现,这种方法有什么好处呢,你可以刷新局部页面,也可以刷新全部页面,这完全由你自己来控制

接下来,找到我们想要刷新的页面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div>
      <el-button @click="click_close">刷新</el-button>
  </div>
</template>

<script>
  export default {
    inject:['reload'],
      methods: {
       click_close(){       
        this.reload()
      }
      
    },
    mounted () {
       
    },
  }
</script>

如果我们这样来写的话确实通过点击按钮可以触发刷新操作

可以看到,当我们点击刷新的时候我们的页面就会触发一次事件,刷新一次,可这并不是我们想要的,我们想要的是当一进入页面,就要触发一次刷新,那干脆我们执行这个事件的函数放在mounted里面好了,话不多说直接开始

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div>
      <el-button @click="click_close">刷新</el-button>
  </div>
</template>

<script>
  export default {
    inject:['reload'],
      methods: {
       click_close(){             
      }
      
    },
    mounted () {
       this.reload()
    },
  }
</script>

如果你这么写,你打开页面后你会惊奇的发现,刷新次数无限飙升,还没有两秒,刷新次数已经达到了上万次,你试的想一下,如果你有后台,不断地刷新,向后台发送请求,就这每秒请求的频率,不把你服务器搞崩才怪,那为什么会陷入死循环呢,很简单,你刚加载页面的时候他触发一次刷新,刷新之后是不是又会重新加载一下页面呢,然后再触发,在加载…无穷无尽 那就没有办法解决嘛,有,既然我们找到了原因,那解决的办法也是有的

解决思路:通过判断来处理第一次刷新后,后续将不再执行,也就是我们第一次执行的时候为true,其余的全为false

在vue-router里找到我们当前页的路由信息,加入meta元标签

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
Vue.use(VueRouter)
const routes = [
{ 

path: '/',
name: 'Home',
component: Home
},
{ 

path: '/table',
// name: 'routeName',
component: () => import('../views/Table.vue'),
meta:{ 

reload:''
}
},
]
const router = new VueRouter({ 

mode: 'hash',
base: process.env.BASE_URL,
routes
})
export default router

然后在我们需要刷新的页面这样来写

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
<div>
<el-button @click="click_close">刷新</el-button>
</div>
</template>
<script>
export default {
inject:['reload'],
methods: {
click_close(){    
if(this.$route.meta.reload.indexOf('one')==-1){
this.$route.meta.reload='one'
this.reload()
}      
}     
},
mounted () {
this.click_close()
}
}
</script>

ok 这样我们就完美解决了当已进入该页面就会默认刷新一次的需求

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181244.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
vue项目如何刷新当前页面
1.场景 在处理列表时,常常有删除一条数据或者新增数据之后需要重新刷新当前页面的需求。 2.遇到的问题
lyudev
2022/08/04
1.5K0
Vue刷新当前页面
这个姿势是利用了 history 中前进和后退的功能,传入 0 刷新当前页面。但是有一个问题就是页面整个刷新过程中会白屏,严重影响用户的体验感,效果不好。
青梅煮码
2023/03/13
2.9K0
vue项目刷新当前页面的方法
尝试了几种刷新页面的方法, 比如 : 1、浏览器直接刷新(会出现短暂的白页面现象) 2、设置一个空白页面,需要刷新的时候跳转到空页面再从空页面跳回来 (些许麻烦) 3、使用 provide /inject (目前觉得最实用,主讲此方法)
全栈程序员站长
2022/09/27
1.4K0
Vue刷新当前页面几种方式
姿势一:this.$router.go(0) 这个姿势是利用了 history 中前进和后退的功能,传入 0 刷新当前页面。但是有一个问题就是页面整个刷新过程中会白屏,严重影响用户的体验感,效果不好。
全栈程序员站长
2022/11/03
2.8K0
Vue刷新当前页面几种方式
Vue刷新当前页面(成功)
但是这个办法会让整个当前页面刷新,相当于F5。如果项目中只是做一个编辑修改操作,希望修改后数据立马改变,但是使用此方法会出现一个短暂的空白页(如下图),用户效果特别不好,不推荐。
全栈程序员站长
2022/11/03
3.6K0
Vue刷新当前页面(成功)
vue 项目中英文切换
最近vue项目需要中英文切换,查了资料,发现大部分都是采用 vue-i18n,但是写的比较简单,大部分都是全局引入语言包,遇到的几个问题
tianyawhl
2020/10/28
3.1K0
vue 项目中英文切换
Vue刷新页面的三种方式[通俗易懂]
我们在写项目的时候,经常会遇到,用户执行完某个动作,改变了某些状态,需要重新刷新页面,以此来重新渲染页面。如:用户登录成功、增加、删除、更新等。
全栈程序员站长
2022/11/02
9270
vue 重新加载页面_页面重新加载
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/03
5K0
vue页面刷新方法_vue返回上一页怎么实时刷新
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/07
3.5K0
Vue.js项目刷新当前路由(页面)的方法与实践
越来越多的前端项目使用MVVM框架Vue.js进行架构开发,充分利用了Vue.js的数据驱动、双向数据绑定、组件化开发以及其优秀的社区生态(官网+第三方扩展支持)等能力。Vue.js在提升性能方面着重的使用了组件复用能力,极大的优化了DOM更新的速度,提升了用户体验。
胡哥有话说
2019/07/25
9.4K0
Vue如何实现当前组件重新加载
在最近开发一些功能需求的时候,会遇到重新加载当前组件的情况。当父组件发生了数据变化需要,重置按钮,只刷新当前加载的子组件等情况。
测试加
2022/12/05
12.5K0
Vue如何实现当前组件重新加载
vue关于页面刷新的几个方式[通俗易懂]
在需要页面刷新的地方写上:this.$router.push(’/emptyPage’),跳转到一个空白页。在emptyPage.vue里beforeRouteEnter 钩子里控制页面跳转,从而达到刷新的效果
全栈程序员站长
2022/11/03
2.4K0
vue关于页面刷新的几个方式[通俗易懂]
vue 基于abstract 路由模式 实现页面内嵌
abstract 是vue路由中的第三种模式,本身是用来在不支持浏览器API的环境中,充当fallback,而不论是hash还是history模式都会对浏览器上的url产生作用,本文要实现的功能就是在已存在的路由页面中内嵌其他的路由页面,而保持在浏览器当中依旧显示当前页面的路由path,这就利用到了abstract这种与浏览器分离的路由模式。
j_bleach
2020/12/16
1.7K0
vue 基于abstract 路由模式 实现页面内嵌
Vue权限路由[菜单权限/按钮权限控制]
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b363801ea8c948258fc3229d0bb3c464~tplv-k3u1fbpfcp-zoom-1.image"/>
程序员海军
2022/02/15
1.2K0
Vue权限路由[菜单权限/按钮权限控制]
Vue无感刷新当前页面
Dawnzhang
2023/10/16
4980
vue创建备忘录
首先是先把需要导入的js文件,这里是main.js, 这里面引入的axios,element-ui等依赖都可以通过vue ui里面进行下载。
GeekLiHua
2025/01/21
540
vue创建备忘录
vue强制刷新页面方法_vue页面回退不刷新
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/17
5.2K0
vue项目实战:实战技巧总结
接下来,如果你只希望引入部分组件,比如 Button 和 Select,那么需要在 main.js 中写入以下内容:
微芒不朽
2022/04/28
3.5K0
vue项目中遇到的那些事。
  有好几天没更新文章了。这段实际忙着做了一个vue的项目,从 19 天前开始,到今天刚好 20 天,独立完成。
Dawnzhang
2019/03/04
1.3K0
vue项目中遇到的那些事。
浅学前端:Vue篇(三)
而我们今天学习的这个所谓的路由,就是根据浏览器路径不同,用不同的视图组件替换这个页面内容展示。
传说之下的花儿
2023/11/13
3880
相关推荐
vue项目如何刷新当前页面
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验