zssanguo开发笔记

2021/02/15

第一篇开发日志,开始记录以便以后查阅修改点和待做项。
当前已实现的功能:
登录页:

//TODO 考虑介绍模块后再加点内容吧,因为介绍模块可折叠,所以视差特效看着不明显/(ㄒoㄒ)/~~
背景parallex(填满整个浏览器窗口高度,下滑会有视差特效)

介绍expansion panels(点中的模块悬浮展示,其他模块收起)
弹窗 //TODO 加入回车触发登录/注册
→注册弹窗(注册前本地验证+网络验证)
→登录弹窗(网络验证) //TODO 本地验证

导航栏:
参考了E-SIM的布局,左侧边栏是用户信息,新加了可以切换展开/收缩。PC大屏幕下菜单在右上角横置。那么问题来了,手机上呢?手机上把菜单做成右侧边栏了,且考虑占地方所以将两边都做成了临时态的(类似modal那种overlay)。。。以后有其他好的方案可以修改

snackbar消息提示:
页面跳转后(比如登录/登出)以及页面内进行操作时显示提示消息

modal弹窗提示:
//TODO 先挖坑

全局状态管理:
//FIXME 导航栏根据用户状态判断是否需要展示导航栏。因为登录跳转后,从服务器请求的用户状态还没来得及返回,导致刚进入主页是没有导航栏的,必须手动刷新一下。考虑用其他方法判断登录状态?
当前保存的全局状态有:
users用户(用户状态)
tools 工具(全局工具类组件的状态) //TODO 当前只有snackbar,后续增加modal

路由管理:
路由管理做了以下事情:
页面跳转后,展示snackbar提示和modal弹窗(如果需要)
进入新页面回到顶部

2021/03/29

记一次问题解决,浏览器F5刷新后由原先view跳转到了主页。
在网上搜了很多资料,有的是路由匹配的优先顺序问题{ path: '*', redirect: '/' }, https://stackoverflow.com/questions/59307620/vue-router-refresingf5-current-page
然而我们并没有做类似处理,不过以后再配这些或者404页面的时候,也要注意一下不要犯相同错误。

直到看到这个贴(见comment),https://stackoverflow.com/questions/60361064/vuejs-route-redirect-on-refresh。 他是因为刷新后store state没了,导致router.beforeEach里islogged的逻辑触发重定向到了登录页。然后发现我犯了类似的错误,tcb里onLoginStateChanged观测loginState变化时,如果变为已登录状态,则触发登录(登录会修改store对的user state并跳转到home),如果变为未登录状态,则触发登出(清空user state并跳转到login)。因为刷新后onLoginStateChanged再次触发, 然后因为已登录状态,所以重定向去了home。修改方案为tcb里的onLoginStateChanged只修改store的user state,登录跳转home通过dispatch login后的回调来实现。