开始记录过程的时候切记不要焦急马上入手敲代码,略微回顾一下之前应用到的常识,能够让你的思路越发的清晰。
回顾一下,上一篇所用到的常识。
基于React.js的后盾管理系统开发全过程(二)
1.如何解决跨域问题
2.路由表的配置
3.window对象下的,localStorage.getItem/setItem/removeItem
办法的应用
接下来是注释:
一.优化用户体验
后面咱们曾经实现了,对主页面的刷新,不会失落用户登录信息的性能。接下来让咱们思考上面一个场景,我敞开浏览器,输出localhost:3000
该页面还是会间接进入到login
,然而用户有可能是手抖,或者某些起因,并不是想真正敞开网页,那么咱们就须要设计当用户再次登陆localhost:3000
的时候,间接进入主页面而不是登陆页面。
1.思路清晰首先来到登陆页面
咱们都晓得react函数组件必须有一个返回值也就是必须return
一些组件来渲染页面,然而你是否疏忽了它自身就是一个函数呢?如果它和react毫无关系的话,你必定能够想到if
语句来判断,然而正因为它是react的语法,所以对于初学者来说经常把它想的太过于浅近,误认为这就是react的固定写法,然而却疏忽了react只是JS的语法库而已,故在学习的过程中肯定要带入本人的思考,不要为了实现成果而去做这件事,肯定要分明,后果不是目标,过程才是咱们成长的重中之重。
理分明组件自身就是一个函数,那么咱们就能够在它的return
里做文章
这里次要的思路就是,在loginIn
这个界面做一个重定向,如果以后localStorage.getItem
有值,那么咱们就能够重定向路由到<Dashboard>
这个组件。在这里咱们还有一个小bug须要解决,当咱们进入<Dashboard>
页面时,
2.思考主页面的成果
咱们把Local Storage里的信息分明当前,刷新页面,页面并不会跳转到<Login>组件,并且·你好${userName}
也会变成undefined
,起因就在于,咱们以后所处的页面其实是<Dashboard>
这个页面,浏览器会缓存这个页面信息,但其实咱们真正心愿的是页面能够返回到<Login>
,同理,咱们须要在<Dashboard>这个组件里做同样的判断:
这时候咱们分明localStorage里的用户信息后,就会跳转到<Login>
了。
二.实现退出登录的成果
前置工作都筹备好了,接下来只须要想方法实现点击按钮把localStorage
里的用户信息分明就能够了,so easily,给按钮调用咱们曾经封装好的localStorage
的removeItem()
办法即可。
这里可能会让人产生疑难,我不是曾经在<Dashboard>做过逻辑判断了吗?
为什么还要重写navigate(‘/login’)
呢?这个问题留给敌人们本人思考吧~
三.主页路由跳转的实现
咱们临时须要用到首页,商品这个两个选项。咱们先实现首页这个组件的出现。
1.设置子路由
应用路由的时候,咱们须要思考咱们心愿它出现在哪个局部,当初能够确定是出现在<Dashboard>
这个页面的,因为咱们应用的react-router-dom V6,能够用路由表来实现字路由的跳转,所以先在<Dashboard>
里占一个地位,要用就的Outlet就得先引入:
而后
2.设置路由表
因为是<Dashboard>
的字路由,所以间接在这个门路下创立children
对象,留神,children属性的值是一个数组。就和最外层的useRoutes一样,接管一个数组。
这时候刚进入<Dashboard>
还不会主动跳转到首页,这时候别忘了设置一下重定向
3.设置<Link>
首先引入react-router-dom里的<Link>组件
,因为我应用的Material UI组件库有本人封装的link组件,为了防止当前产生一下不必要的麻烦,所以我给react的link重命名Rlink而后再引入。
接来下让ListItem
体现为{Rlink}
即可增加to
属性定向到咱们的home
留神,这里不要写成to='/home'
这样你示意的是一级路由,意思是在localhost:3000前面寻找/home组件,然而咱们其实是没有这个组件的,就会报错。(你是在想写斜杠,就要写成to="./home"
,代表在以后门路下寻找home组件)
让咱们看看成果
点击登陆,马上跳转到<Home>
组件,性能实现。