卡比图床项目——接口模型、mobx状态管理之间的数据联动

89 阅读2分钟

接口模型以及mobx之间的数据联动

在mobx管理的auth.js中引入接口模型的Auth

在登录aciton中调用Auth.login接口,根据接口的参数要求

截屏2022-12-15 13.14.40.png 写在mobx的管理里面,并且做一些额外的操作(比如用户登录成功或者失败) 为了让模型更干净,可以再次包装一层Promise,所以交由Auth.js进行状态管理。

截屏2022-12-15 13.23.24.png 同理注册状态管理也可以进行修改:调用Auth.register接口

截屏2022-12-15 13.25.09.png

组件之间的联动

接下来就是和组件之间的联动了。 来到注册页面Register.js,antd的模版代码是用户点击提交时会触发onFinish事件,我们只需要让Finish事件去调用stores中的注册方法即可。

截屏2022-12-15 13.28.18.png 引入useStores来使用Auth

import {useStores} from "../stores";

跑通注册逻辑 截屏2022-12-15 14.39.58.png

截屏2022-12-15 14.40.23.png

那么登录逻辑也同理: 同样需要先set

截屏2022-12-15 14.46.18.png

截屏2022-12-15 14.46.05.png

添加状态

在stores目录下新建一个专属于用户信息的store,叫做user.js。 里面只需要有用户信息即可。 默认为null,有一个拉取用户信息的方法获得当前用户的信息。以及重置user信息的方法。

截屏2022-12-16 12.18.34.png

优化:当用户登录或者注销时也就是执行auth.js里的动作的时候,设置用户名等操作也要同步在user.js里面进行。问题就是如何在auth.js这个store里面使用user.js这个store

解决:在user.js中不导出UserStore这个class,直接导出对象。

截屏2022-12-16 12.33.03.png

这样子我们可以把Auth也直接导出为对象在index.js中使用 截屏2022-12-16 12.35.22.png

在auth.js中就可以引入user.js了

截屏2022-12-16 12.40.14.png 这样登录注册逻辑就可以控制用户信息了

把这个信息暴露给Header以此来展示用户信息。 为了方便在控制台查看属性,设置一下window.stores

截屏2022-12-16 12.54.06.png

截屏2022-12-16 12.54.19.png

Header中显示用户名: 截屏2022-12-16 13.04.52.png

使用observer来进行观测 截屏2022-12-16 13.03.35.png

用户名成功显示 截屏2022-12-16 13.05.17.png

实现跳转

这里可以不选择link标签,可以选择useHistory(v6以后叫做useNavigate)

const navigate = useNavigate() 

截屏2022-12-16 13.24.35.png

在注册和登录界面也加上

截屏2022-12-16 13.30.15.png 这样我们就实现了登录注册后跳转首页,并且在header展示用户信息

继续优化:在首页展示hello,用户名

同样给Home添加一个ovserver

截屏2022-12-16 13.35.43.png 然后引入UserStore

截屏2022-12-16 13.44.14.png

截屏2022-12-16 13.44.23.png