国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Vue】實現(xiàn)當(dāng)前頁面刷新的四種方法

這篇具有很好參考價值的文章主要介紹了【Vue】實現(xiàn)當(dāng)前頁面刷新的四種方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

這兩周在寫一個后臺管理,每次調(diào)用接口實現(xiàn)增刪改查的過程中,都需要刷新當(dāng)前頁面或者刷新數(shù)據(jù)。如果手動點擊瀏覽器的小圈圈不僅麻煩、用戶體驗感極差,而且不會真的有人讓用戶手動刷新叭。。。這個問題可以稱得上是前端的bug了。那么,順著這個問題,一通搜尋下來,整理了幾個刷新當(dāng)前頁面的方法,如下:

方法一:location.reload

學(xué)習(xí)JS的過程中,大家應(yīng)該都了解過Browser 對象,其中Location 對象window 對象的一部分。Location 對象中有一個方法,也就是reload()方法,用于刷新當(dāng)前文檔,類似于瀏覽器上的刷新頁面按鈕。

代碼測試:

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

效果展示:

【Vue】實現(xiàn)當(dāng)前頁面刷新的四種方法
缺點: 想必大家都能看出來了叭,一閃一閃亮晶晶~
【Vue】實現(xiàn)當(dāng)前頁面刷新的四種方法

方法二:$router.go(0)

這種方法大家應(yīng)該比較熟悉了,學(xué)過vue路由跳轉(zhuǎn)的都知道$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>

效果展示:

【Vue】實現(xiàn)當(dāng)前頁面刷新的四種方法
缺點: 肉眼可見!會出現(xiàn)一瞬間的空白頁面,用戶體驗不好。
【Vue】實現(xiàn)當(dāng)前頁面刷新的四種方法

方法三:provide、inject和$nextTick

首先,我們來認(rèn)識一下這組選項:

provide 選項應(yīng)該是:一個對象或返回一個對象的函數(shù)。
inject 選項應(yīng)該是:一個字符串?dāng)?shù)組,或 一個對象,對象的 [key] 是本地的綁定名。

在學(xué)習(xí)vue父子組件通信的時候,大家應(yīng)該都知道這是用來干嘛的了:父組件通過provide向子組件傳遞數(shù)據(jù),子組件通過inject獲取數(shù)據(jù)。
那么$nextTick又是干哈的呢?
$nextTick 又說是Vue的另一個生命周期函數(shù):當(dāng)你修改完數(shù)據(jù)(數(shù)據(jù)更新了)之后,Vue幫你操作完DOM之后,把真實的DOM放入頁面了(Dom更新渲染),Vue再幫我們調(diào)用這個函數(shù)(可以監(jiān)聽DOM元素被修改后,在該函數(shù)中寫你要執(zhí)行的邏輯)。
接下來,我們來組合一下思路:
我們在父組件中通過給<router-view></router-view>添加v-if來控制子組件銷毀和重建的方式,從而控制頁面的再次加載。然后在需要當(dāng)前頁面刷新的頁面中注入 reload 依賴,直接通過this.reload來調(diào)用刷新。

代碼測試:

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】實現(xiàn)當(dāng)前頁面刷新的四種方法
缺點: 可以看到頁面不會刷白,但是這種方法也有很多弊端。我們都知道Vue 在修改數(shù)據(jù)后,視圖不會立刻更新,而是等同一事件循環(huán)中的所有數(shù)據(jù)變化完成之后,再統(tǒng)一進行視圖更新。這樣容易造成事件循環(huán);并且使用provideinject也涉及到組件的多層級通信,有些繁瑣。

【Vue】實現(xiàn)當(dāng)前頁面刷新的四種方法

方法四:創(chuàng)建空白頁

這個方法…我此前從沒用過,就是利用$router.replace路由跳轉(zhuǎn)到一個空白頁面,然后在空白頁面中立即執(zhí)行$router.replace切換到原來的頁面。$router.replace不會向 history 添加新紀(jì)錄,當(dāng)路由跳轉(zhuǎn)得比較快的時候,不會出現(xiàn)一瞬間的空白頁。

代碼測試:

空白頁:

<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,
    }
  }]
})

效果展示:

【Vue】實現(xiàn)當(dāng)前頁面刷新的四種方法
缺點: 大家應(yīng)該可以看到地址欄的變化。。。
【Vue】實現(xiàn)當(dāng)前頁面刷新的四種方法

以上就是比較常見的當(dāng)前頁面刷新的方法,各有優(yōu)缺點,根據(jù)應(yīng)用場景使用。
如有誤,請指正!
【Vue】實現(xiàn)當(dāng)前頁面刷新的四種方法文章來源地址http://www.zghlxwxcb.cn/news/detail-425623.html

到了這里,關(guān)于【Vue】實現(xiàn)當(dāng)前頁面刷新的四種方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 020:vue刷新跳轉(zhuǎn)當(dāng)前頁面

    020:vue刷新跳轉(zhuǎn)當(dāng)前頁面

    第020個 查看專欄目錄: VUE ------ element UI 在vue和element UI聯(lián)合技術(shù)棧的操控下,本專欄提供行之有效的源代碼示例和信息點介紹,做到靈活運用。 (1)提供vue2的一些基本操作:安裝、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeMount,mounted, beforeUpdate,upda

    2024年02月09日
    瀏覽(24)
  • 微信小程序刷新(重載)當(dāng)前頁面的方法,超簡單~

    在實際開發(fā)過程中,我們經(jīng)常需要重新加載或者刷新當(dāng)前頁面,其實非常簡單,僅需要兩步即可完成。 1、wxml 文件 按鈕綁定點擊事件,隨便起個函數(shù)名,如:sx 2、 js 文件 實現(xiàn)sx函數(shù),調(diào)用本頁的onLoad()函數(shù)即可 就是這么簡單!

    2024年02月11日
    瀏覽(23)
  • 如何實現(xiàn)網(wǎng)頁當(dāng)前頁面刷新功能

    如何實現(xiàn)網(wǎng)頁當(dāng)前頁面刷新功能

    類似于這樣的頁面 實現(xiàn)思路如下: 首先我們在pinia中定義一個刷新狀態(tài)的字段,點擊按鈕的時候,改為相反的值 對主頁面的路由跳轉(zhuǎn)Router-view綁定一個v-if,它綁定一個自定義的一個響應(yīng)的參數(shù),我們在主頁面監(jiān)聽pinia的刷新狀態(tài)數(shù)據(jù),如果它發(fā)生變化,就把定義的響應(yīng)參數(shù)改

    2024年01月22日
    瀏覽(21)
  • Vue組件通信——父子組件通信的四種方法

    Vue組件通信——父子組件通信的四種方法

    全局引入 在main.js文件中引入并注冊 之后就可以全局使用組件了 局部引入 在父組件中引入 之后就可以在父組件中使用組件了 在子組件 prop 中可以注冊一些自定義組件屬性,父組件調(diào)用子組件時可以向 prop 中的自定義屬性傳值。 子組件代碼: 父組件代碼 prop 也可以通過 v-

    2023年04月16日
    瀏覽(101)
  • uni-app小程序刷新當(dāng)前頁面的兩種方法

    方法一 wx.relaunch來刷新當(dāng)前頁面,頁面會被重載,若路由攜帶參數(shù)需自行拼接,方法如下 (如果用電腦打開小程序,該方法有bug) 上面是獲取頁面路由和參數(shù)的方法,具體使用如下 方法二(推薦) 通過獲取該頁面實例執(zhí)行其內(nèi)部的生命周期方法來刷新頁面

    2024年02月12日
    瀏覽(33)
  • 有關(guān)實現(xiàn)深拷貝的四種方法

    有關(guān)實現(xiàn)深拷貝的四種方法

    ????????深拷貝與淺拷貝: ????????在開始之前我們需要先了解一下什么是淺拷貝和深拷貝,其實深拷貝和淺拷貝都是針對的引用類型,JS中的變量類型分為值類型(基本類型)和引用類型;對值類型進行復(fù)制操作會對值進行一份拷貝,而對引用類型賦值,則會進行地址

    2024年02月04日
    瀏覽(16)
  • 實現(xiàn)瀑布流布局的四種方法

    實現(xiàn)瀑布流布局的四種方法

    頁面上是一種 參差不齊 的多欄布局,類似上圖所示隨著頁面滾動條向下滾動,這種布局還會不斷加載數(shù)據(jù)塊并附加至當(dāng)前尾部,大部分為圖片,圖片 固定 寬度,高度 不一 ,根據(jù)原比例縮放到寬度達到固定的要求,每行排滿后,新的圖片添加到后面 固定寬度,高度不一 岑

    2023年04月15日
    瀏覽(23)
  • Jmeter實現(xiàn)參數(shù)化的四種方法

    目錄 一、CSV Data Set Config/CSV數(shù)據(jù)文件設(shè)置 二、函數(shù)助手 1、Random函數(shù) 2、RandomString隨機字符串 3、CSVRead 4、time 5、UUID 三、計數(shù)器(Counter) ????????參數(shù)化:自動化測試腳本的一種常用技巧,事先準(zhǔn)備好數(shù)據(jù),指定參數(shù)的取值范圍和規(guī)則;而非在腳本中寫死,腳本執(zhí)行時從

    2024年04月22日
    瀏覽(21)
  • CSS實現(xiàn)三角形的四種方法

    CSS實現(xiàn)三角形的四種方法

    【解釋】不設(shè)置寬高,用邊框大小控制三角型大小 【分解步驟】 設(shè)置一個 div 不設(shè)寬高 【示例】 ? 2. 設(shè)置透明 留下想要指向方向 相反 的邊框設(shè)定,其他方向的邊框設(shè)為 transparent 透明 【示例】 實現(xiàn)指向向上的三角形 【效果圖】 指向上,指向下,指向左,指向右 ? 如何設(shè)

    2024年02月15日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】-快速排序的四種方法實現(xiàn)以及優(yōu)化

    【數(shù)據(jù)結(jié)構(gòu)】-快速排序的四種方法實現(xiàn)以及優(yōu)化

    作者:小樹苗渴望變成參天大樹 作者宣言:認(rèn)真寫好每一篇博客 作者gitee:gitee 如 果 你 喜 歡 作 者 的 文 章 ,就 給 作 者 點 點 關(guān) 注 吧! 今天講一種不一樣的排序,聽名字就知道這個排序不拐彎抹角的,我們來看看它又多快速,并且快速排序的前三種方法都是遞歸思想,

    2024年02月03日
    瀏覽(51)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包