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 ...
随机推荐
- IP 代理池
https://github.com/jhao104/proxy_pool 安装依赖 pip install -r requirements.txt 配置 Config/setting.py # Co ...
- PyQt5 对话框示例
import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * class Example(QMainWindow): def _ ...
- PyQt5 模块modules
The QtCore module contains the core non-GUI functionality. This module is used for working with time ...
- ubuntu12.04可用源
最近试了不少源,都无法用.这一份是目前可以正常使用的 #deb cdrom:[Ubuntu 12.04.5 LTS _Precise Pangolin_ - Release amd64 (201408 ...
- kafka架构、基本术语、消息存储结构
1.kafka架构 kafka处理消息大概流程 生产者发送消息给kafka服务器 消费者从kafka服务器(broker)读取消息 kafka服务器依靠zookeeper集群进行服务协调管理 2.ka ...
- logrotate 如何执行日志按照大小切分
说在最先的话,logrotate要设置按照文件大小来配置日志切分,需要通过三个东西. 1.配置logrotate 的配置文件 命名未任意文件,在启动的时候指定,例如/etc/weblog.conf 参 ...
- FWT,FST入门
0.目录 目录 0.目录 1.什么是 FWT 2. FWT 怎么做 2.1. 或卷积 2.2.与卷积 2.3.异或卷积 2.4.例题 3. FST 3.1. FST 怎么做 3.2.例题 1.什么是 ...
- Spring AOP学习笔记03:AOP的核心实现之获取增强器
上文讲了spring是如何开启AOP的,简单点说就是将AnnotationAwareAspectJAutoProxyCreator这个类注册到容器中,因为这个类最终实现了BeanPostProcess ...
- 使用三台云服务器搭建真正的Redis集群
三台云服务器搭建redis集群# 今天花了一天的时间弄集群redis:遇到了很多坑,从头开始吧 环境讲解: 两台配置:1核2G,另一台:1核1G: 操作系统:Centos 7.6 Redis:3.2. ...
- OS_进程调度:C++实现
实验二.进程调度模拟实验 一.实验目的: 本实验模拟在单处理机环境下的处理机调度,帮助理解进程调度的概念,深入了解进程控制块的功能,以及进程的创建.撤销和进程各个状态间的转换过程. 二.实验内容: 进 ...