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

vue页面刷新_vue强制重置组件vue页面刷新首先我们都知道vue属于单页面应用,默认境况下是不会触发刷新页面操作的,所以这个时候就需要我们通过事件来触发reload()来达到刷新操作接下来我就为大家介绍三种刷新页面的方法1.wiindow.location.reload([bForceGet])该方法强迫浏览器刷新当前页面bForceGet可选参数,默认为false,从客户端缓存里取当前true,则以get方式,从服务器端获取最新的页面,相当于页面f5刷新wiindow.location.replace(URL)

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

vue页面刷新

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

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

1.

wiindow.location.reload([bForceGet])
该方法强迫浏览器刷新当前页面

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

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

wiindow.location.replace(URL)

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

wiindow.location.replace(location.href)

2.

this.$router.go(0)

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

3.

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

3.

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

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

<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>

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

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

<template>
  <div>
      <el-button @click="click_close">刷新</el-button>
  </div>
</template>

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

如果我们这样来写的话确实通过点击按钮可以触发刷新操作
在这里插入图片描述

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

<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元标签

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

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

<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.net/181244.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android程序员接私活完整攻略「建议收藏」

    Android程序员接私活完整攻略「建议收藏」接私活对程序员这个圈子来说是一个既公开又隐私的话题,不说全部,应该大多数程序员都有过想要接私活的想法,当然,也有部分得道成仙的不主张接私活。但是很少有人在公开场合讨论私活的问题,似乎都在避嫌。就跟有人下班后跑滴滴一样,程序员私有时间接点活挣点钱不也很正常么,不过不要在上班时间就行,就跟你上班期间出去跑滴滴一样。当你竭尽全力想要去接私活的时候一定做过这样的事,百度搜索“程序员如何接私活”或者…

    2022年6月14日
    160
  • c++ STL_鱼c

    c++ STL_鱼c学校并未教授C++,当初接触的C++的STL,也是皮毛而已。结合对Java的集合框架等内容的认识,回顾这部分内容,收获很大。文章目录概述STL六大组件简介三大组件介绍1.容器2.算法3.迭代器常用容器1.string容器string容器基本概念string容器常用操作2.vector容器vector容器基本概念vector迭代器vector的数据结构vector常用API操作…

    2025年8月23日
    4
  • 小米手机-解BL锁+开ROOT权限

    小米手机-解BL锁+开ROOT权限在小米社区和网址https://miuiver.com/上,有MIUI的历史版本,还有刷机教程等等本文是参考上述的教程,并结合自己在刷机过程中,出现的问题进行记录并得到解决方案下面主要是,重要部分,同时还有一些容易出错的地方解BL锁要提前,在设置–更多设置–开发者模式–设备解锁状态中,绑定账号和设备,注意的地方,不要重复绑定设备,不然时间会重新计算的,吃亏了2次。只要登陆过一个小米账号,点击绑定一次即可。如果没有找到开发者模式,就先设置–我的设备–全部参数–.

    2022年6月10日
    73
  • 绝对成交课程培训_成交的5大关键

    绝对成交课程培训_成交的5大关键影响力集团培训讲师孟昭春http://blog.sina.com.cn/mengzhaochun第一天下午一个思想:把自己能把握的事情把握就能实现把握不了的目标。1.孟老师从自身做法出发讲出:他下面的销售人员问他问题他从来不给答案,只是指墙(墙上有5问5答)。2.大客户特点:金额大、周期比较长、内部决策者多。3.用户的四个拒绝:我不需要、我不着急、我不相信、我没钱。(70%顾客…

    2025年8月3日
    3
  • Redis的配置文件详解「建议收藏」

    Redis的配置文件详解「建议收藏」目录1、开头说明2、INCLUDES3、MODULES4、NETWORK5、GENERAL6、SNAPSHOTTING7、REPLICATION8、SECURITY9、CLIENTS10、MEMORYMANAGEMENT11、APPENDONLYMODE12、LUASCRIPTING13、REDISCLUSTER资料推荐   上一篇博客我们介绍了如何安装Redis,在Redis的解压目录下有个很重要的配置文件redis.conf (/opt/redis-4.0.9目录下),

    2022年6月9日
    41
  • Fiddler抓取视频数据「建议收藏」

    准备工作:(1)、手机(安卓、ios都可以)/安卓模拟器,今天主要以安卓模拟器为主,操作过程一致。(2)、抓包工具:Fiddel下载地址:(https://www.telerik.com/download/fiddler)(3)、编程工具:pycharm(4)、安卓模拟器上安装抖音(逍遥安装模拟器)一、fiddler配置在tools中的options中,按照图中勾选后点击Actio…

    2022年4月8日
    883

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号