接口模型以及mobx之间的数据联动
在mobx管理的auth.js中引入接口模型的Auth
在登录aciton中调用Auth.login接口,根据接口的参数要求
写在mobx的管理里面,并且做一些额外的操作(比如用户登录成功或者失败)
为了让模型更干净,可以再次包装一层Promise,所以交由Auth.js进行状态管理。
同理注册状态管理也可以进行修改:调用Auth.register接口
组件之间的联动
接下来就是和组件之间的联动了。 来到注册页面Register.js,antd的模版代码是用户点击提交时会触发onFinish事件,我们只需要让Finish事件去调用stores中的注册方法即可。
引入useStores来使用Auth
import {useStores} from "../stores";
跑通注册逻辑
那么登录逻辑也同理: 同样需要先set
添加状态
在stores目录下新建一个专属于用户信息的store,叫做user.js。 里面只需要有用户信息即可。 默认为null,有一个拉取用户信息的方法获得当前用户的信息。以及重置user信息的方法。
优化:当用户登录或者注销时也就是执行auth.js里的动作的时候,设置用户名等操作也要同步在user.js里面进行。问题就是如何在auth.js这个store里面使用user.js这个store
解决:在user.js中不导出UserStore这个class,直接导出对象。
这样子我们可以把Auth也直接导出为对象在index.js中使用
在auth.js中就可以引入user.js了
这样登录注册逻辑就可以控制用户信息了
把这个信息暴露给Header以此来展示用户信息。 为了方便在控制台查看属性,设置一下window.stores
Header中显示用户名:
使用observer来进行观测
用户名成功显示
实现跳转
这里可以不选择link标签,可以选择useHistory(v6以后叫做useNavigate)。
const navigate = useNavigate()
在注册和登录界面也加上
这样我们就实现了登录注册后跳转首页,并且在header展示用户信息
继续优化:在首页展示hello,用户名
同样给Home添加一个ovserver
然后引入UserStore