尚品汇前台管理项目:未登录情况下访问购物车,登录账号后页面不更新问题解决方案
问题描述:如果用户未登录状态下通过首页访问 【我的购物车】,点击【结算】,跳转 登录页面后,即使输入正确的账号和密码获取到用户信息后,地址栏路径和页面也不会更新,从【我的订单】点击过来的是可以正常跳转的
问题分析:因为 trade组件配置路由独享守卫,只有从shopcart的结算按钮过来才能放行,而全局路由守卫中配置的未登录不能去交易相关(trade) 支付相关(pay paysucess) 用户中心(center)没有购物车,shopcart组件内的 【结算】按钮未对用户登录状态做判断,直接跳转 trade,此时重定向带的query参数是 trade【所以地址栏结尾是 trade】,而登录后又因为路由独享守卫的原因,login是不能跳到 trade的,就导致了上面问题的发生
解决思路:那就根据用户是否登录,动态配置shopcart结算按钮的路径,先获取token判断用户是否登录,如果已登录则直接跳 trade,没有登录带 shopcart参数跳转至login页面,登录后可以再返回购物车,此时已经登录,结算按钮也可以正常跳转 trade 结算页面了
shopcart组件
<router-link class="sum-btn" :to="path">结算</router-link>
path利用计算属性得出
computed: { path() { const token = getToken() return token ? '/trade' : '/login?redirect=shopcart' } }
这样未登录时访问【我的购物车】页面不刷新问题就解决了