likes
comments
collection
share

如何发现getDvaApp的过程思考

作者站长头像
站长
· 阅读数 77

万事开头难啊,就比如这篇文章起笔我也不知道该怎么写。

最近项目是一个类似于中台的大数据展示项目,为什么这么说呢,简单的解释下,就是进入系统满屏幕的歌中echarts、antv以及D3所做的图标、可是这里面偏偏出现了数据简报、平台管理以及权限设置相关的东西,产品管这个叫可视化(手动狗头。

言归正传,说一下今天要表达的东西吧,权当是做个笔记。

框架使用的是ali的umi,我们都知道这个框架中,是自动集成了dva的,基于reduxreact-redux以及redux-saga的数据流方案,在使用中都是借助react-redux的connent方法数据的获取和组件的更新。有一个前提条件就是只能在组件中这样调用。

发现问题

这里出现一个问题,如果我们需要在非组件中获取store中的数据我们应该怎么处理呢?

寻找想要的结果

经过umi的包装大多数的属性都是由umi的包释放出来的,比如上面提到的connect以及react-router、redux等。

我是这样处理的,首先先找到umi导出的包看下他都向外暴露了那些方法

如何发现getDvaApp的过程思考

大致说下每个导出的是什么,说的不对的还请看出来的高手纠正下。

先从第二个说起,第二个导出的主要是一些umi预调的方法,主要是一些集成插件的方法以及类型文件

如何发现getDvaApp的过程思考

这里并没有我们需要的关于dva的方法导出。

第三个主要是一些辅助性插件配置,比如defineMock、defineConfig不过其中也导出了一些如PluginAPI、IApi这样的方法

如何发现getDvaApp的过程思考

重点来了!!!

第一个则是由Umi在运行中依据文件结构以及配置自动生成,比如路由(约定式路由)、dva的model、redux相关的plugins以及plugins对应的types.d.ts文件等。

如何发现getDvaApp的过程思考

在这里我们可以看到有导出一个getDvaApp方法,并且我们可以确定这一行导出的方法均与状态管理有关。

进入这个文件我们可以看到getDvaApp方法返回一个dvaApp

如何发现getDvaApp的过程思考

到这里基本可以确信已经找到了方法,剩下的只是验证或者说使用这个方法了。

在代码中引入并打印调用这个方法的返回值如下:

如何发现getDvaApp的过程思考

这里可以看到熟悉的dispatchgetState方法了。 剩下的就是愉快的使用了!

总结

其实这个方法并不难找到,稍微百度下就差不多,这里说这么多只是想表明:遇到问题想办法自己解决,这是一个可以成长的过程。 目前大环境十分不好,到处充斥着焦虑。不乏有人过分夸大,但是我总觉得如果你是一个有能力的朋友,就不必太在意介意什么前端已死,即便环境大好想要更高的工资,也同样需要自身拥有高素质。

转载自:https://juejin.cn/post/7210614375291469881
评论
请登录