dva的简介
dva的定义
dva 是基于现有应用架构 (redux + react-router + redux-saga 等)的一层轻量封装;
- redux 他是react当中的仓库,如果熟悉vue的话,他的功能类似于vuex。将公用的数据放在redux当中,通过reducer函数改变redux中的值(state)。注意redecer是一个纯函数,具体概念和用法可以去学习一下。
- react-router 就是react当中的路由,他在使用上也和vue有一些不一样。具体使用可以去看我的博客。
- redux-saga 他就是redux当中处理异步请求的中间件。
dva中他有着react当中很重要的功能组成,路由和仓库。这两个功能模块足够让我们快速搭建一个轻量的项目。
项目结构

mock 我未使用过,看字面意思应该是mock数据使用的。mock数据,通过一个
json文件我们自定义一个接口的数据,通过本地服务可以调用这个接口。推荐一个包mockservernode_modules 这个就是依赖
public
src
- assets 静态资源目录
- components 组件
- models 数据存放的仓库
- routes 路由组件
- services 接口api
- utils 工具
我使用dva主要是应用他的数据管理,dva 通过 model 的概念把一个领域的模型管理起来,包含同步更新 state 的 reducers,处理异步逻辑的 effects,订阅数据源的 subscriptions 。
数据流向

通过这个图,我们可以大致明白在dva当中的数据流向。
首先用户通过 url 访问不同的路由组件,一个路由组件,应该是由很多个组件构成。这些组件组成了 视图层 。
用户在 视图层 会触发(dispatch)一些动作(action),这些动作会传递到我们的Model.js 这个文件当中,根据action的名字,找到对用的方法(effect 或者 reducer) ,然后更新state,视图重新渲染
这个过程类似于我们的事件监听的过程。用户点击了视图,会触发一个我们写好的事件,就比如我们给一个div绑定一个点击的事件。 用户点击了div 会触发 我们绑定的事件处理函数。只不过这个事件,和事件处理函数的位置,被我们放在Model.js这个文件当中了。把我们的数据集中管理,体现的就是仓库的思想,而且,可以让这个数据在很多个组件之间共享,不必像之前一样一层一层传递。
具体的写法可以翻阅我的另一篇博客,ant design pro 需要注意的两个点。ant design pro 当中就使用了dva。链接 https://www.cnblogs.com/Rembang/p/13231290.html
dva的简介的更多相关文章
- dva使用及项目搭建
一.简介 本文将简单分析dva脚手架的使用及项目搭建过程. 首先,dva是一个基于redux和redux-saga的数据流方案,然后为了简化开发体验,dva还额外内置了react-router和fet ...
- 前端笔记之React(七)redux-saga&Dva&路由
一.redux-saga解决异步 redux-thunk 和 redux-saga 使用redux它们是必选的,二选一,它们两个都可以很好的实现一些复杂情况下redux,本质都是为了解决异步actio ...
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
随机推荐
- mysql常见聚合函数
count():总数量avg():平均数std():标准差sum():求和max():最大值min():最小值 上面的不过多介绍group_concat():分组列值全部展示到一行eg:mysql&g ...
- 面试了 6 轮 Google 中国 之后,还是挂了
去年换工作的时候, 面试了一下 Google (这里说的是 Google 中国哈), 来了个 Google 面试六轮游, 结果是没通过.
- Java 多线程基础(四)线程安全
Java 多线程基础(四)线程安全 在多线程环境下,如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线 ...
- 第m大的身份证号码(局部排序代全局、结构体排序)
第m大的身份证号码(点击) 时间限制: 1 Sec 内存限制: 128 MB ...
- AlertController的使用
UIAlertView 随着苹果上次iOS 5的发布,对话框视图样式出现在了我们面前,直到现在它都没有发生过很大的变化.下面的代码片段展示了如何初始化和显示一个带有“取消”和“好的”按钮的对话框视图. ...
- 【Android】使用Appium+python控制真机,碰到的问题以及处理(持续更新)
问题: selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Ori ...
- 【Spring注解驱动开发】在@Import注解中使用ImportBeanDefinitionRegistrar向容器中注册bean
写在前面 在前面的文章中,我们学习了如何使用@Import注解向Spring容器中导入bean,可以使用@Import注解快速向容器中导入bean,小伙伴们可以参见<[Spring注解驱动开发] ...
- 跨云厂商部署 k3s 集群
原文链接:https://fuckcloudnative.io/posts/deploy-k3s-cross-public-cloud/ 最近一两年各大云服务商都出了各种福利活动,很多小伙伴薅了一波又 ...
- 测试人员遇到Android APP崩溃和无响应手足无措?
这2天,在测APP兼容性时,遇到APP奔溃闪退的情况.将问题反馈给开发后,开发自己调试后,没有复现.由于又是远程,base地不在一块,我总不能把手机寄过去吧,那也太费事了. 所以就想到,提供明确的报错 ...
- 【解读】Http协议
一.HTTP简介 1.HTTP协议,即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相 ...