dva封装了redux,减少很多重复代码比如action reducers 常量等,本文简单介绍dva redux操作流程。

利用官网的一个加减操作小实例来操作:

dva所有的redux操作是放在models目录下,通过namespace作为key,标识不同的模块state。

可以给state设置初始数据,比如:

reducers跟传统的react-redux写法一致,所有的操作放在reducers对象内:

reducers: {
'increment'(state, action) {
return {
counter: state.counter +
}
},
decrement(state, action) {
return {
counter: state.counter -
}
}
}

写法可以为'increment' 加引号,也可以直接increment 不加引号,如上面代码中 decrement

推荐加引号写法,可以做为功能或状态区分  如: 'fecth/fetching' 'fetch/fail' 'fetch/success'

异步操作写在effects对象内:

effects: {
*asyncDecr({ payload }, { call, put }) {
yield call(delay, );
yield put({type: 'decrement' });
}
},

其实*asyncDecr 就是function* asyncDecr,是个Generator状态机

call, put其实是saga的写法,dva集成了saga。

UI组件内的使用:

引入连接器:

import { connect } from 'dva';
利用connect连接器将mapStateToProps 导入组件:
const mapStateToProps = (state) => {
return {
products: state.products,
};
}; export default connect(mapStateToProps)(ProductPage);

现在可以直接取出对象:

const { products, dispatch } = this.props;
render() {
const { products, dispatch } = this.props;
return (
<div className={styles.wrapper}>
<div className={styles.title}>结果 {products.counter}</div>
<div>
<Button type="primary" onClick={()=>dispatch({type:'products/increment',payload:})}>incr</Button>
<Button type="primary" onClick={()=>dispatch({type:'products/asyncDecr',payload:})}>incr</Button>
{/* <Button type="primary">incr</Button> */}
&nbsp;&nbsp;
<Button type="primary">decr</Button>
</div>
</div>
);
}

小栗子源码链接:

https://github.com/qjhe/dva-demo

dva框架之redux相关的更多相关文章

  1. dva框架使用mock.js模拟数据 + fetch请求数据

    what DVA? Dva是基于Redux做了一层封装,对于React的state管理,有很多方案,我选择了轻量.简单的Dva. dva 可以很方便就使用mock.js进行数据的模拟. 只需要三步,即 ...

  2. dva框架使用详解及Demo教程

    dva框架的使用详解及Demo教程 在前段时间,我们也学习讲解过Redux框架的基本使用,但是有很多同学在交流群里给我的反馈信息说,redux框架理解上有难度,看了之后还是一脸懵逼不知道如何下手,很多 ...

  3. 使用dva框架的总结

    最近的项目是react+dva+atd+webpack的一个后台项目,刚接触dva就感觉很喜欢,很简洁用着很爽. 关于使用redux中的一些问题 1.文件切换问题. redux的项目通常哟啊分为red ...

  4. Dva框架从初识到上手

    引言 最近工作需要用dva框架,同事帮我培训了一下,有一点点认识,在此总结. 当然,以后对dva可能会了解更透彻,文章会不断更新的.   初识 开始看架构代码,没有看文档的时候,不知道里面的几个关键字 ...

  5. react第十六单元(redux的认识,redux相关api的掌握)

    第十六单元(redux的认识,redux相关api的掌握) #课程目标 掌握组件化框架实现组件之间传参的几种方式,并了解两个没有任何关系组件之间通信的通点 了解为了解决上述通点诞生的flux架构 了解 ...

  6. 在dva框架和create-react-app创建出来的框架中修饰器语法与按需加载引入antd分别配置

    按需加载需要的包  babel-plugin-import    装饰器语法需要的包  @babel/plugin-proposal-decorators dva框架 将.webpackrc  改成. ...

  7. Django框架04 /模板相关、别名/反向解析/路由分发

    Django框架04 /模板相关.别名/反向解析/路由分发 目录 Django框架04 /模板相关.别名/反向解析/路由分发 1. 语法 2. 变量/万能的点 3 . 过滤器 4. 标签Tags 5. ...

  8. Django框架03 /视图相关

    Django框架03 /视图相关 目录 Django框架03 /视图相关 1. 请求相关 2.响应相关 3.FBV和CBV 视图(视图函数和视图类) 3.1 类视图 CBV 3.2 视图函数 FBV ...

  9. 即将开源 | 2亿用户背后的Flutter应用框架Fish Redux

    背景 在闲鱼深度使用 Flutter 开发过程中,我们遇到了业务代码耦合严重,代码可维护性糟糕,如入泥泞.对于闲鱼这样的负责业务场景,我们需要一个统一的应用框架来摆脱当下的开发困境,而这也是 Flut ...

随机推荐

  1. wampserver的安装与配置

    一.安装:wamp的安装很简单,只需要按照提示并根据自己的需求操作即可,这里不再赘述. 二.配置:wamp安装完后,需进行如下配置才能正常工作. 1.修改MySQL的登录密码 (1)启动WampSer ...

  2. jquery分页例子

    先看效果图: 实现原理很简单,使用了jquery.pagination这个插件,每当点击页码时异步去服务器去取该页的数据,简单介绍如下: 一.数据库表结构:很简单  就四个字段 分别是News_id  ...

  3. 20145238-荆玉茗 《网络对抗技术》-Web安全基础实践

    Web安全基础实践 实践过程记录 实验准备: 输入命令java -jar webgoat-container-7.0.1-war-exec.jar,一直等待等待直到出现 在浏览器中打开localhos ...

  4. vue2中用swiper

    一.安装swiper npm install --save swiper 二.home组件 //home.js <app-banner :listImg="bannerList&quo ...

  5. 如何搭建私人的ghost博客

    可参考 http://blog.pandax.me/cjbk/ 此文

  6. ElasticSearch的配置

  7. python 爬虫简介以及使用方法

    阶段大纲: 一. 爬虫 1. 基本操作 - 登录任意网站(伪造浏览器的任何行为) 2. 性能相关 - 并发方案: - 异步IO: gevent/Twisted/asyncio/aiohttp - 自定 ...

  8. iOS开发学习资源

    最近想写点关于iOS开发的总结和心得.虽然网上资源一大堆,质量参差不齐,还是推荐一点干货吧! https://www.objc.io/issues/  这个网站的文章质量很高,很多干货,可惜今年已经停 ...

  9. javascript中的栈堆内存

    <--------栈内存---------> 俗称叫做作用域(全局作用域/私有作用域) >为js代码提供的执行环境(执行js代码的地方) >基本数据内省是直接存放在栈内存中的 ...

  10. wordpress | 网站访问速度优化方案(Avada)

    一.谷歌字体 原因: Wordpress系统默认使用谷歌字体,在国内谷歌域名被屏蔽,所以导致操作反应慢. 解决方法: 对于后台:找到Wordpress这个文件 /wp-includes/script- ...