溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用vue 如何實(shí)現(xiàn)判斷頁面是再次刷新還是首次進(jìn)入

發(fā)布時(shí)間:2020-11-06 14:52:22 來源:億速云 閱讀:1450 作者:Leah 欄目:開發(fā)技術(shù)

使用vue 如何實(shí)現(xiàn)判斷頁面是再次刷新還是首次進(jìn)入?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

我就廢話不多說了,大家還是直接看代碼吧~

<template>
  <div>
   判斷頁面是首次進(jìn)入還是再次刷新
  </div>
</template>
 
 <script>
export default {
  data(){
    return{
       
       }
    },
 
  mounted () {
   //第一種方法
   // if(window.name == ""){
   // console.log("首次被加載");
   // window.name = "isReload"; // 在首次進(jìn)入頁面時(shí)我們可以給window.name設(shè)置一個(gè)固定值 
   // }else if(window.name == "isReload"){
   // console.log("頁面被刷新");
   // }
   //第二種方法
   if (window.performance.navigation.type == 1) {
    console.log("頁面被刷新")
   }else{
    console.log("首次被加載")
   }
  },
 
  methods: {
   
  },
 
  }
</script> 

<style scoped> 
</style>

補(bǔ)充知識(shí):VUE-Router 同一頁面第二次進(jìn)入不刷新 問題以及幾個(gè)解決方案

最近正好遇到一個(gè)問題,修改用戶的頭像,修改后再進(jìn)入用戶主頁,發(fā)現(xiàn)改了之后即使數(shù)據(jù)變了。。頁面也不會(huì)重新渲染。。。

下面提供集中解決方案來給予大家參考:

1. 可以在刷新的頁面定義一個(gè)參數(shù), 這樣每次都會(huì)渲染出不同的頁面:

route 實(shí)例化命名配置:

{
      // 用戶信息
      path: '/accountDetail/:randKey',
   name: 'accountDetail',
   component: accountDetail,
   meta: {requiresAuth: true}
 },

跳轉(zhuǎn) 的地方配置:

var chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
 var maxLength = 15;
    var res = '_jsonpphotochange';
    for (var i = 0; i < maxLength; i++) {
      var id = Math.ceil(Math.random() * 35);
      res += chars[id];
    }
    // res 為隨機(jī)字符串,下面是跳轉(zhuǎn):
 this.$router.push('/accountDetail/' + paramsAccount);

2. 可以讓全局的頁面都重載,這個(gè)比較狠冗余也多,慎重點(diǎn)用:

在App.vue下修改:

<template>
 <div id="app" class="app">
  <transition :key="key">
  <router-view class="router-view"></router-view>
  </transition>
 </div>
 </template>
 <script type="text/ecmascript-6">
 // import {mapState} from 'vuex';
 export default {
  name: 'app',
  computed: {
  key() {
   return this.$route.name !== undefined &#63; this.$route.name + new Date() : this.$route + new Date();
  }
  }
 };
 </script>
// 就是在template下加一對(duì)標(biāo)簽<transition></transition> 加上key的屬性,不過官網(wǎng)說 如果防止組件的復(fù)用就用這個(gè) 還是比較推薦這個(gè)方法的。

3. watch 來檢測(cè)路由變化。。缺點(diǎn)是,有時(shí)候會(huì)莫名出現(xiàn) 點(diǎn)兩次的情況,也就是你要跳轉(zhuǎn)會(huì)跳轉(zhuǎn)兩次。。有人說是進(jìn)來會(huì)執(zhí)行一次跳轉(zhuǎn)回執(zhí)行一次,不過我覺得不太像。。希望有能人士指點(diǎn)。。

watch: {
 '$route' (to, from) {
  this.httpGetUserInfo(); // 這是我ajax獲取用戶信息的方法
 }
 }
 // 這樣每次路由執(zhí)行就會(huì)運(yùn)行這個(gè)方法,第一次打開不會(huì)運(yùn)行,你需要用created()方法來執(zhí)行下ajax方法。

關(guān)于使用vue 如何實(shí)現(xiàn)判斷頁面是再次刷新還是首次進(jìn)入問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI