使用vue 如何实现判断页面是再次刷新还是首次进入?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
我就废话不多说了,大家还是直接看代码吧~
<template>
<div>
判断页面是首次进入还是再次刷新
</div>
</template>
<script>
export default {
data(){
return{
}
},
mounted () {
//第一种方法
// if(window.name == ""){
// console.log("首次被加载");
// window.name = "isReload"; // 在首次进入页面时我们可以给window.name设置一个固定值
// }else if(window.name == "isReload"){
// console.log("页面被刷新");
// }
//第二种方法
if (window.performance.navigation.type == 1) {
console.log("页面被刷新")
}else{
console.log("首次被加载")
}
},
methods: {
},
}
</script>
<style scoped>
</style>
补充知识:VUE-Router 同一页面第二次进入不刷新 问题以及几个解决方案
最近正好遇到一个问题,修改用户的头像,修改后再进入用户主页,发现改了之后即使数据变了。。页面也不会重新渲染。。。
下面提供集中解决方案来给予大家参考:
1. 可以在刷新的页面定义一个参数, 这样每次都会渲染出不同的页面:
route 实例化命名配置:
{
// 用户信息
path: '/accountDetail/:randKey',
name: 'accountDetail',
component: accountDetail,
meta: {requiresAuth: true}
},
跳转 的地方配置:
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 为随机字符串,下面是跳转:
this.$router.push('/accountDetail/' + paramsAccount);
2. 可以让全局的页面都重载,这个比较狠冗余也多,慎重点用:
在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 ? this.$route.name + new Date() : this.$route + new Date();
}
}
};
</script>
// 就是在template下加一对标签<transition></transition> 加上key的属性,不过官网说 如果防止组件的复用就用这个 还是比较推荐这个方法的。
3. watch 来检测路由变化。。缺点是,有时候会莫名出现 点两次的情况,也就是你要跳转会跳转两次。。有人说是进来会执行一次跳转回执行一次,不过我觉得不太像。。希望有能人士指点。。
watch: {
'$route' (to, from) {
this.httpGetUserInfo(); // 这是我ajax获取用户信息的方法
}
}
// 这样每次路由执行就会运行这个方法,第一次打开不会运行,你需要用created()方法来执行下ajax方法。
关于使用vue 如何实现判断页面是再次刷新还是首次进入问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。