当前位置:首页 > 科技  > 软件

为啥我放弃用 Pinia 和 Vuex 去做字典状态管理呢?

来源: 责编: 时间:2024-01-15 09:20:22 281观看
导读大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心~最近需要需要封装一套字典数据,给团队中的所有项目使用,因为毕竟字典这东西,是很通用的,所以封装一套公用的字典数据,也是很有必

大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心~QOH28资讯网——每日最新资讯28at.com

最近需要需要封装一套字典数据,给团队中的所有项目使用,因为毕竟字典这东西,是很通用的,所以封装一套公用的字典数据,也是很有必要的~QOH28资讯网——每日最新资讯28at.com

QOH28资讯网——每日最新资讯28at.com

一、字典封装

在项目开发中,字典是不可或缺的一部分,字典一般就是一个不会频繁修改的集合,字典的作用一般是用来做:QOH28资讯网——每日最新资讯28at.com

  • 下拉框选择
  • 表格数据的回显
  • 其他用处

QOH28资讯网——每日最新资讯28at.com

1.下拉框选择

这个相信是用的最多的,项目中会有许许多多的下拉框,这些下拉框其实基本都是不变的,且可能很多个页面的下拉框都会共用同一个字典QOH28资讯网——每日最新资讯28at.com

QOH28资讯网——每日最新资讯28at.com

2.表格回显

比如你在添加表格数据的时候,你传的是字典值去后端,那么到时查询表格数据回显时,后端也是给你返回字典值的话,那么这时你需要通过字典值去匹配出字典文本显示在表格上~QOH28资讯网——每日最新资讯28at.com

QOH28资讯网——每日最新资讯28at.com

3.其他用处

当然字典也有其他用处,比如你需要拿这个字典列表去展示到页面上,或者其他不同的用户。QOH28资讯网——每日最新资讯28at.com

4.思考

当我们明白字典的用处之后,思考一下,我们需要从字典上获取什么东西,才能实现上面三个功能呢?回顾总结一下三个要求:QOH28资讯网——每日最新资讯28at.com

  • 下拉框列表展示:项目统一格式是{ label: string; value: string }[]
  • 字典值匹配字典文本:怎么去匹配呢?其实使用map去匹配性能比较好
  • 其他用处:其实我们也不敢保证哪里会用到,所以需要保留字典原始数据

所以其实封装字典,最重要的是封装三个数据:QOH28资讯网——每日最新资讯28at.com

  • 字典原始数据
  • 字典option格式数据
  • 字典map

并且,每个项目中所需要用到的字典也是不同的,比如 A 项目只需要用到 5 个字典,而 B 项目需要用到 10 个字典,所以也需要提供一个开关,让项目自己去选择需要哪些字典,而不是全量去请求字典QOH28资讯网——每日最新资讯28at.com

二、存在哪呢?

咱们的字典是需要状态管理的,并响应渲染到对应的页面上。QOH28资讯网——每日最新资讯28at.com

在现在的 Vue3 项目中,很多项目都会使用Pinia来进行状态管理,小部分 Vue2 迁移 Vue3 的项目还是会继续使用Vuex来进行状态管理。QOH28资讯网——每日最新资讯28at.com

这两个都是不错的状态管理工具,字典存在里面,其实都能达到我们想要的效果。QOH28资讯网——每日最新资讯28at.com

但是我们想一个问题,如果我们的字典数据封装是基于Pinia或Vuex去封装的,那就耦合在一起了,万一以后项目用了其他的状态管理工具呢?那是不是我又得基于这个状态管理工具去封装一套?而且就算是只有Pinia和Vuex,我也得封装两套,但是我觉得我只想封装一套就够了,两套的话维护起来成本高。QOH28资讯网——每日最新资讯28at.com

所以啊,可以选择另外的东西来进行状态管理~我们不要去基于Pinia或Vuex去封装,我们要基于Vue3去封装,那么就只需要封装一套了。QOH28资讯网——每日最新资讯28at.com

三、effectScope

effectScope是Vue3提供的一个 API ,effectScope 可以有两个作用:QOH28资讯网——每日最新资讯28at.com

  • 收集副作用
  • 全局状态管理

第一个作用不是我们本文章的重点,重点是第二个作用。QOH28资讯网——每日最新资讯28at.com

现在 Vue3 最火的全局状态管理工具肯定是 Pinia 了,那么你们知道 Pinia 的原理是什么吗?原理就是依赖了 effectScope:QOH28资讯网——每日最新资讯28at.com

QOH28资讯网——每日最新资讯28at.com

所以我们完全可以自己使用 effectScope 来实现自己的局部状态管理,比如我们封装一个通用组件,这个组件层级比较多,并且需要共享一些数据,那么这个时候肯定不会用 Pinia 这种全局状态管理,而是会自己写一个局部的状态管理,这个时候 effectScope 就可以排上用场了。QOH28资讯网——每日最新资讯28at.com

vueuse 中的 createGlobalState 就是为了这个而生:QOH28资讯网——每日最新资讯28at.com

QOH28资讯网——每日最新资讯28at.com

QOH28资讯网——每日最新资讯28at.com

四、回到字典封装

回到字典封装,现在我们可以使用 effectScope来进行状态管理存储了,首先我们自己封装一个useGlobalStateQOH28资讯网——每日最新资讯28at.com

QOH28资讯网——每日最新资讯28at.com

接着需要用这个函数,来创建咱们的字典状态管理,具体代码如下,其实重点就在于,获取某一个字典的时候,需要获取这三个东西:QOH28资讯网——每日最新资讯28at.com

  • 原始数据
  • options
  • 映射对象map

QOH28资讯网——每日最新资讯28at.com

接着,我只需要在适当的时机,去请求字典就行了,一般都是放在初始化的时候去获取的:QOH28资讯网——每日最新资讯28at.com

QOH28资讯网——每日最新资讯28at.com

可以看出我们获取到了我们想要的字典,并且具备响应式渲染的效果:QOH28资讯网——每日最新资讯28at.com

QOH28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-60941-0.html为啥我放弃用 Pinia 和 Vuex 去做字典状态管理呢?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 麻了,这让人绝望的大事务提交

下一篇: 从错误中学习: 了解Go编程的六个坏习惯

标签:
  • 热门焦点
  • 得物效率前端微应用推进过程与思考

    一、背景效率工程随着业务的发展,组织规模的扩大,越来越多的企业开始意识到协作效率对于企业团队的重要性,甚至是决定其在某个行业竞争中突围的关键,是企业长久生存的根本。得物
  • 这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • 使用Webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的问题

    1、前言在我们使用 Selenium 进行 UI 自动化测试时,常常会因为浏览器驱动与浏览器版本不匹配,而导致自动化测试无法执行,需要手动去下载对应的驱动版本,并替换原有的驱动,可能还
  • 为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • 2天涨粉255万,又一赛道在抖音爆火

    来源:运营研究社作者 | 张知白编辑 | 杨佩汶设计 | 晏谈梦洁这个暑期,旅游赛道彻底火了:有的「地方」火了——贵州村超旅游收入 1 个月超过 12 亿;有的「博主」火了&m
  • 猿辅导与新东方的两种“归途”

    作者|卓心月 出品|零态LT(ID:LingTai_LT)如何成为一家伟大企业?答案一定是对“势”的把握,这其中最关键的当属对企业战略的制定,且能够站在未来看现在,即使这其中的
  • 微博大门常打开,迎接海外画师漂洋东渡

    作者:互联网那些事“起猛了,我能看得懂日语了”。“为什么日本人说话我能听懂?”“中文不像中文,日语不像日语,但是我竟然看懂了”…&hell
  • 半导体需求下滑 三星电子DS业务部门今年营业亏损预计超10万亿韩元

    7月17日消息,据外媒报道,去年下半年开始的半导体需求下滑,影响到了三星电子、SK海力士、英特尔等诸多厂商,营收明显下滑,部分厂商甚至出现了亏损。作为
  • Android 14发布:首批适配机型公布

    5月11日消息,谷歌在今天凌晨举行了I/O大会,本次发布会谷歌带来了自家的AI语言模型PaLM 2、谷歌Pixel Fold折叠屏、谷歌Pixel 7a手机,同时发布了Androi
Top