实现未登录不可以浏览首页
在router中加入路由守卫 router.beforeEach
const router = createRouter({history: createWebHashHistory(),routes,})router.beforeEach((to, from, next) => {const isLogin = JSON.parse(localStorage.getItem('isLogin') || '""')isLogin || to.name === 'Login' ? next() : next('/login')})
next中可以传入path 或者 name 等
name是路由的name
{path: '/login',name: 'Login',component: Login,},
localStorage有三种读取/写入的方式
localStorage['a'] = 1localStorage.b = truelocalStorage.setItem('c', 'hello')
点击登录按钮时跳转到Home组件
使用 useRouter Composition API获取路由
router.push实现 url 切换, 文档
import { useRouter } from 'vue-router'export default {setup(){const router = useRouter()const handleLogin = () => {localStorage.isLogin = truerouter.push({name: 'Home'})}return {handleLogin}}}
已登录则不能跳转至登录页面
添加路由独享守卫 beforeEnter, 在跳转到该路由前做判断
{path: '/login',name: 'Login',component: Login,beforeEnter: (to, from, next) => {const isLogin = JSON.parse(localStorage.getItem('isLogin') || '""')isLogin ? next({ name: 'Home' }) : next()},
