React使用DVA本地state传值取值


最近在用Ant Pro 做一个后台系统,在使用中发现Antd Pro使用DVA来实现redux+sagas+router一系列的功能,比传统方式要方便快捷的多,自己研究了其中一些原理,在此贴上代码供别人参考也给自己做个记录,

需要取值的页面

index.js

import { connect } from 'dva';

//这里是一个语法糖,和传统的connect()()作用一样。即把对应models目录下的state取出与本页的变量关联。
@connect(({ chart, loading, global = {} }) => ({ //其中global={}表示global中的所有state
chart, //等同chart:chart,ES6语法。
weather: global.weather, //读取原有的state,即models中的global.js文件中的weather
city: global.city
loading: loading.effects['chart/fetch'], //这个statu使用models中的chart.js文件中的fetch方法异步获取
}))
export default class XXX extends Component {
...
render(){
const { chart, loading, weather, city } = this.props; //在这可用'this.props'读取 }
}

含有state值的页面

chart.js

export default {
namespace: 'chart', state: {
......
}, effects: { //这里相当于是redux
*fetch(_, { call, put }) {
const response = yield call(fakeChartData); //这里的fakeChartData是一个request请求
yield put({
type: 'save',
payload: response,
});
},
......
},
}

global.js

export default {
namespace: 'global',
state: {
collapsed: true,
notices: [],
city: "郑州市",
weather: {},
mapView: "city",
},
.......
}

React使用DVA本地state传值取值的更多相关文章

  1. Mvc4_传值取值应用

    Mvc路由运行机制:   首先,Web 浏览器向服务器发送一条URL 请求,如http://HostName/ControllerName/ActionName/Parameters. 其次,请求被A ...

  2. 微信小程序 传值取值的方法总结

    微信小程序 传值取值的几种方法总结 列表index下标取值 页面传值 form表单取值 1. 列表index下标取值 实现方式是:data-index="{{index}}"挖坑及 ...

  3. 【2017-05-21】WebForm跨页面传值取值、C#服务端跳转页面、 Button的OnClientClick属性、Js中getAttribute和超链接点击弹出警示框。

    一.跨页面传值和取值: 1.QueryString - url传值,地址传值 优缺点:不占用服务器内存:保密性差,传递长度有限. 通过跳转页面路径进行传值,方式: href="地址?key= ...

  4. WebForm跨页面传值取值、C#服务端跳转页面、 Button的OnClientClick属性和超链接点击弹出警示框

    一.跨页面传值和取值: 1.QueryString - url传值,地址传值 优缺点:不占用服务器内存:保密性差,传递长度有限. 通过跳转页面路径进行传值方式: href="地址?key=v ...

  5. 微信小程序传值取值的几种方法

    一,列表index下的取值 实现方式是:data-index="{{index}}"挖坑及e.currentTarget.dataset.index来填坑即可 1.1生成值 < ...

  6. react中map循环中key取值问题

    数组中没有唯一的key,可以定义变量,拼接字符串连接. let i = 0; key={`infoItem-col-${i++}`}

  7. session传值取值

    protected void Page_Load(object sender, EventArgs e) { //判断session是否为空 if (Session["user"] ...

  8. 怎么掌握微信小程序的取值、传值、数据存储

    小程序界面设定如下 父级页面:A界面 子级页面:B界面 异级页面:C界面 一.本页面取值(A界面→A界面) a.例如:input输入文字获取到value(键盘输入时触发) wxml: <inpu ...

  9. ASP.NET GridView HyperLinkField传值和取值【转】

    来源:http://www.cnblogs.com/junjie94wan/archive/2011/08/17/2143623.html 经常做Winform程序,好久没有做WEB都有些生疏了,Gr ...

随机推荐

  1. .gz解压

    1.今天很神奇我遇到这样的压缩包,啧啧啧,好少见的,记录下 gzip  -d  http_log.gz 这是讲http_log文件解压到当前的路径下

  2. 常见的HTTP响应状态码解析

    概要 状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果.借助于状态码,浏览器(或者说用户)可以知道服务器是正常的处理了请求,还是出现了错误. 状态码以3位数字和原因短语组成,例如 200 ...

  3. BZoj 2301 Problem b(容斥定理+莫比乌斯反演)

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MB Submit: 7732  Solved: 3750 [Submi ...

  4. nginx 监控脚本

    [root@Client_Download_Source shell]# cat start.nginx.sh #!/bin/bash while true do sleep 2 check=`net ...

  5. Oracle数据重复,只取一条

    --方法一 select * from tb_supply where rowid=any(select max(rowid) from tb_supply group by phone_id) -- ...

  6. 如何下载kubenetes最新的rpm包?

    一,新增aliyun的软件仓库 tee /etc/yum.repos.d/kubernetes.repo <<-'EOF' [kubernetes] name=Kubernetes bas ...

  7. debian 下deb包的制作

    http://page.renren.com/601230663/note/817856769?op=next&curTime=1333642042000

  8. IDEA上创建 Maven SpringBoot项目发布到Tomcat

    概述 上篇记录了IDEA上创建Maven SpringBoot+mybatisplus+thymeleaf 项目,但是如何将SpringBoot发布到Tomcat,直接采用Maven 命令Clear- ...

  9. centos中less翻页查询的用法

    用法实例: cat 21342.log | less

  10. Json传递数据两种方式(json大全)

    1.Json传递数据两种方式(json大全)----------------------------字符串 var list1 = ["number","name&quo ...