vue 判斷頁(yè)面是首次進(jìn)入還是再次刷新的實(shí)例
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
<template> <div> 判斷頁(yè)面是首次進(jìn)入還是再次刷新 </div></template> <script>export default { data(){ return{ } }, mounted () { //第一種方法 // if(window.name == ''){ // console.log('首次被加載'); // window.name = 'isReload'; // 在首次進(jìn)入頁(yè)面時(shí)我們可以給window.name設(shè)置一個(gè)固定值 // }else if(window.name == 'isReload'){ // console.log('頁(yè)面被刷新'); // } //第二種方法 if (window.performance.navigation.type == 1) { console.log('頁(yè)面被刷新') }else{ console.log('首次被加載') } }, methods: { }, }</script> <style scoped> </style>
補(bǔ)充知識(shí):VUE-Router 同一頁(yè)面第二次進(jìn)入不刷新 問(wèn)題以及幾個(gè)解決方案
最近正好遇到一個(gè)問(wèn)題,修改用戶的頭像,修改后再進(jìn)入用戶主頁(yè),發(fā)現(xiàn)改了之后即使數(shù)據(jù)變了。。頁(yè)面也不會(huì)重新渲染。。。
下面提供集中解決方案來(lái)給予大家參考:
1. 可以在刷新的頁(yè)面定義一個(gè)參數(shù), 這樣每次都會(huì)渲染出不同的頁(yè)面:
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. 可以讓全局的頁(yè)面都重載,這個(gè)比較狠冗余也多,慎重點(diǎn)用:
在App.vue下修改:
<template> <div 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 ? this.$route.name + new Date() : this.$route + new Date(); } } }; </script>// 就是在template下加一對(duì)標(biāo)簽<transition></transition> 加上key的屬性,不過(guò)官網(wǎng)說(shuō) 如果防止組件的復(fù)用就用這個(gè) 還是比較推薦這個(gè)方法的。
3. watch 來(lái)檢測(cè)路由變化。。缺點(diǎn)是,有時(shí)候會(huì)莫名出現(xiàn) 點(diǎn)兩次的情況,也就是你要跳轉(zhuǎn)會(huì)跳轉(zhuǎn)兩次。。有人說(shuō)是進(jìn)來(lái)會(huì)執(zhí)行一次跳轉(zhuǎn)回執(zhí)行一次,不過(guò)我覺(jué)得不太像。。希望有能人士指點(diǎn)。。
watch: { ’$route’ (to, from) { this.httpGetUserInfo(); // 這是我ajax獲取用戶信息的方法 } } // 這樣每次路由執(zhí)行就會(huì)運(yùn)行這個(gè)方法,第一次打開(kāi)不會(huì)運(yùn)行,你需要用created()方法來(lái)執(zhí)行下ajax方法。
以上這篇vue 判斷頁(yè)面是首次進(jìn)入還是再次刷新的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向2. asp(vbs)Rs.Open和Conn.Execute的詳解和區(qū)別及&H0001的說(shuō)明3. CSS hack用法案例詳解4. PHP設(shè)計(jì)模式中工廠模式深入詳解5. 用css截取字符的幾種方法詳解(css排版隱藏溢出文本)6. ASP+ajax實(shí)現(xiàn)頂一下、踩一下同支持與反對(duì)的實(shí)現(xiàn)代碼7. .NET中l(wèi)ambda表達(dá)式合并問(wèn)題及解決方法8. ThinkPHP5實(shí)現(xiàn)JWT Token認(rèn)證的過(guò)程(親測(cè)可用)9. asp中response.write("中文")或者js中文亂碼問(wèn)題10. JSP數(shù)據(jù)交互實(shí)現(xiàn)過(guò)程解析
