首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React18 中如何实现全局状态管理

大家好,我是张大鹏,今天又来给大家分享技术文章了。

在之前的文章中,我给大家介绍了一个权限管理系统,已经实现了基本的登录功能,今天来讲一下如何实现全局状态管理功能。

先说一下需求:在用户登录以后,我们需要记录用户的登录信息,比如他的用户名,角色等,然后需要在页面的顶部动态的添加一个菜单,菜单名就是用户名,菜单下拉的时候,有退出登录和用户中心等选项。

如图:

这个功能看起来是比较简单的,比如我们可以使用localStorage存储用户信息,然后在任意位置通过localStorage访问信息。

一开始,我也是这么做的。不过React的组件的生命周期是比较奇特的,同一段逻辑代码,可能会被渲染两次,而且,就算你取到了数据,最后渲染出来的时候,可能也不一定是真的数据,这是真实发生的事情。最主要的问题在于我对于React组件的生命周期还没有太过于深刻的理解,不知道如何利用React本身的特点去解决这个问题。

之后,我将目光聚焦到了Redux这个框架上,希望通过Redux的引入来解决这个问题。不过Redux的官方文档成功将我劝退了,首先是它的官方示例里面推荐使用useStore来对状态进行管理,但是在webstorm里面又显示要使用configStore来进行替代。我查阅了大量的资料,最终找到了实现方案,但是却发现官方文档里面给的又是一个叫useSlice的钩子,要查看详细源码的时候,发现源码里面还是使用旧的useStore的方案。

过程很曲折,总之,最后就是我对这个强大的状态管理框架望而却步,敬而远之。

最终,我发现了另外一个轻量级的框架:

https://recoiljs.org/docs/introduction/getting-started/

如图:

这个框架的使用案例超级简单:

详细的内容大家可以看它的官方文档,这里给大家看看我在权限管理系统中是如何使用的。

首先,我会引入根组件,用根组件包裹整个容器,使得全局上下文管理器能够生效:

然后,我声明了一个用户信息的状态:

接着,在登录的时候,我将获取到的用户信息,存入到这个状态中:

之后当跳转到首页以后,我获取到全局的用户状态:

并使用这个全局的用户状态动态的生成顶部菜单:

最终就得到如下效果了:

到此为止,我们一个后台管理系统最核心的功能就开发完成了。后面我会接着开发用户管理的相关功能,比如如何展示所有的用户数据,如何筛选管理员和普通用户,如何进行分页展示,如何修改用户的信息等等。

这些功能会非常丰富,我会抽时间慢慢完善,然后将其输出为文章分享给大家。

这套系统目前是可以出售的哈,价格是3000元,另外如何想要完整的学习本套系统的开发流程,自己实现一个完整的权限管理系统,可以报名跟我学习,学费是5000元,整体的架构是 Golang1.20 + React18 + MySQL8,内容非常的丰富。如果你经济压力不大,我更推荐你报名一对一私教,提供一对一的指导教学,学的会更扎实,更明白,有问题也能够得到一对一的辅导。

今天的文章就分享到这里了,谢谢大家~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230529A03MWW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券