vue.js - 浏览器重新加载页面上的 Vue.js Vue-router 奇怪行为
问题描述
我不明白我的 vue-router 行为......
在浏览器中,当显示主页时,我单击工具栏中的 /users 链接 /users 页面正确显示.. 但是如果我尝试重新加载此 /users 页面(单击重新加载浏览器按钮 ... Chrome目前)然后..
/users 页面在 /home 页面显示后立即重新显示...如我的 router.beforeEach() 函数的控制台日志中所示
ROUTER BEFORE to: {name: "Users", meta: {…}, path: "/users", hash: "", query: {…}, …}
ROUTER non protected page: {name: "Users", meta: {…}, path: "/users", hash: "", query: {…}, …}
ROUTER BEFORE to: {name: "Home", meta: {…}, path: "/home", hash: "", query: {…}, …}
ROUTER non protected page: {name: "Home", meta: {…}, path: "/home", hash: "", query: {…}, …}
这种奇怪行为的原因可能是什么?
路由器.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import Firebase from 'firebase'
import Home from '@/views/Home.vue'
Vue.use(VueRouter)
function loadView (view) {
return () => import((/* webpackChunkName: 'view-[request]' */ `@/views/${view}.vue`))
}
const router = new VueRouter({
mode: 'history',
routes: [
{
path: '/home',
name: 'Home',
component: Home
},
{
path: '/users',
name: 'Users',
component: loadView('Users')
}
...
{
path: '/',
component: Home
}
]
})
router.beforeEach((to, from, next) => {
console.log('ROUTER BEFORE to: ', to)
if (to.matched.some(record => record.meta.requiresAuth)) {
console.log('ROUTER protected page: ', to)
if (!Firebase.auth().currentUser) {
console.log('ROUTER user not authenticated')
next({ path: '/users', query: { redirect: to.fullPath } })
} else {
console.log('ROUTER user authenticated')
next()
}
} else {
console.log('ROUTER non protected page: ', to)
next()
}
})
export default router
解决方案
这是我的 firebase.auth().onAuthStateChanged((user)) 函数的附带效果..
firebase.auth().onAuthStateChanged((user) => {
if (user) {
this.$router.push('/member')
} else {
this.$router.push('/home')
}
})
我应该写它:
firebase.auth().onAuthStateChanged((user) => {
if (user) {
this.$router.push('/member')
} else {
this.$router.push('/users')
}
})
每当我重新加载当前页面时都会调用此函数...
推荐阅读
- javascript - 是否有事件或方法可以知道 Chrome 扩展程序何时在“扩展程序”页面中打开或关闭?
- python - 如何摆脱字符串列表中的单词
- reactjs - 如何配置响应以使用 npm-watch 监视 css 文件的更改
- python - 将系列放置到给定数组
- vue.js - 重用现有组件
标签 - mongodb - Mongo DB聚合按数组字段排序,选择前三个记录并将其他记录合并为一个
- cluster-computing - 为什么在 Service Fabric 中使 Min 和 Target Replica Size 相同?
- c# - C# 8 在不使用对象变量时使用 var
- indexing - 什么决定了元素/桶的大小?- 哈希索引
- debugging - 如何在 mac 系统中使用终端以调试模式启动 tomcat 服务器?