redux超易学三篇之二(开始使用react-redux)
其实 redux 真正让人感到混乱的还是在 react-redux 的使用中。
请配合完整代码参考~:完整源代码
也不是说混乱,主要是网上 推崇 最佳实践。学习一个新东西的时候,本来就很陌生,上来就用最佳实践,当然让人摸不着头脑。
其实搞定 react-redux 主要分两点:
容器组件 和 展示组件 的最佳实践 (难就难在这里,系统架构层次的难)
办法:想办法精通react props 的传值。
另外一个就是 react-redux 的固定用法了。
1.数据从哪里来? 高阶组件(容器组件)其实就是解决这么一个问题。 --- 高阶组件是一个函数!!!函数!!!
严格地区分了各国人的进入,就能防止罪犯的逃逸。
你们懂的,如果希望稳定,有时候就需要滴水不漏。
单独举个例子区分一下,数据的来源假设有三种
- localStorage
- 调用web接口获得的
- state里面的数据
这里参考 react 小书的(要付钱哦):http://huziketang.mangojuice.top/books/react/lesson28
也可以直接看我代码 src 层的 higher/simple 中的 demoCreateHigher、demoUseHigher 文件。
demoCreateHigher:一个函数,参数是 (组件,需要从本地获取的属性),返回一个带 props 的组件。
完成了获取本地数据的 逻辑。
demoUseHigher:先定义了一个组件,此后使用demoCreateHigher创建了一个我们真正需要的组件(相当于类的实例化)。
总结:当有两个组件都需要从 本地 localStorage 加载相关的数据,上述的高阶组件就能很好地 实现逻辑的复用。复用的同时也将 获取数据的 逻辑和纯组件 解耦。
一举两得。
2.然后我们通过对数据的剥离,构造纯组件,降低耦合性。
其实可以这样理解: 容器组件 = 高阶组件(函数) 处理过后的 展示组件。=>也就是我们第一点说的 处理完逻辑 之后的展示组件。
| 展示组件 | 容器组件 | |
|---|---|---|
| 作用 | 展示样式和骨架 | 描述如何运行?数据获取/状态更新 |
| 直接使用redux? | 否 | 是 |
| 数据来源 | props | 监听redux |
| 数据修改 | 调用props中的回调函数 | 由redux派发 |
| 调用方式(这个我没理解) | 手动 | 由react-redux生成 |
上面贴了一张官网的图(http://www.redux.org.cn/docs/basics/UsageWithReact.html),拿我们之前的 redux 例子来 架构一下吧~
我们之前的 reducer 有什么内容呢? 创造奇迹 和 通过成长改变人的状态 和 添加女朋友(不存在的,已PASS)
展示组件
- MiracleList:用于展示奇迹列表(可以被添加)
miracle: [] / Array ---- 结构 {text: ''}
method: itemClick(这里刚开始不用你redux的时候使我们写在app层测试的,但是用上 redux 后就用其对应的 高阶组件处理后传给它了) - MiracleItem:专门展示奇迹事项
text: String
method: 来自 MiracleList 传下来的 onClick ->onClick = {() => this.props.onClick()}
容器组件:其实这里主要是redux中的数据对 展示组价 中所需要的 数据的一种映射链接
MiracleInput:用于添加奇迹项目
因为其和 redux 联系较多,所以这里将其放置在容器组件中
容器组件(其实就是利用 store.subscribe() 将redux 和原来的组件链接起来的东西罢了)
完成了上面的步骤,其实我们就完成了 使用 redux 进行数据的 增加操作,其实这个时候我们已经基本能够使用 redux 了。
完成的 redux 还请切换分支到 react-redux-all 哦~~~~~
redux超易学三篇之二(开始使用react-redux)的更多相关文章
- redux超易学三篇之三(一个逻辑完整的react-redux)
配合源代码学习吧~ : 我是源代码 这一分支讲的是 如何完整地(不包含优化,也没有好看的页面) 搭建一个 增删改查 的 react-redux 系统 不同于上一节的 react-redux,这里主要采 ...
- redux超易学三篇之一(单独说redux)
redux其实非常简单.当复杂的步骤被拆分,其实每一步都是很容易的. Github: 完整代码链接 本文在 create-react-app 中的 index.js 随便引入了一下. (其实不必如此. ...
- Redux系列02:一个炒鸡简单的react+redux例子
前言 在<Redux系列01:从一个简单例子了解action.store.reducer>里面,我们已经对redux的核心概念做了必要的讲解.接下来,同样是通过一个简单的例子,来讲解如何将 ...
- React + Redux 入坑指南
Redux 原理 1. 单一数据源 all states ==>Store 随着组件的复杂度上升(包括交互逻辑和业务逻辑),数据来源逐渐混乱,导致组件内部数据调用十分复杂,会产生数据冗余或者混用 ...
- 《手把手教你》系列技巧篇(二十五)-java+ selenium自动化测试-FluentWait(详细教程)
1.简介 其实今天介绍也讲解的也是一种等待的方法,有些童鞋或者小伙伴们会问宏哥,这也是一种等待方法,为什么不在上一篇文章中竹筒倒豆子一股脑的全部说完,反而又在这里单独写了一篇.那是因为这个比较重要,所 ...
- 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 第三篇 Entity Framework Plus 之 Query Cache
离上一篇博客,快一周,工作太忙,只能利用休息日来写一些跟大家分享,Entity Framework Plus 组件系列文章,之前已经写过两篇 第一篇 Entity Framework Plus 之 A ...
- 我的屌丝giser成长记-研三篇
进入研三以来,基本都是自己的自由时间了,从导师的项目抽离出来,慢慢的都交给师弟他们来负责.研三的核心任务就是找工作以及写毕业论文,因为有导师科研基金项目成果作为支撑,所以自己的论文没什么可担心,一切都 ...
随机推荐
- mysql 主键
什么是主键 表中的每一行都应该具有可以唯一标识自己的一列(或一组列).而这个承担标识作用的列称为主键. 任何列都可以作为主键,只要它满足以下条件: • 任何两行都不具有相同的主键值.就是说这列的值都是 ...
- SpringBoot18 Swagger、API接口文档生成、WireMock、模拟后台数据
1 Swagger 1.1 简述 前后端分离的项目需要前后端开发人员协同工作,后台开发人员需要给到前端开发者一套API文档:利用Swagger可以简单高效的帮助后台开发者生成RestfulAPI开发文 ...
- 27-拓扑排序-poj1094
http://poj.org/problem?id=1094 Sorting It All Out Time Limit: 1000MS Memory Limit: 10000K Total Su ...
- 面试题:MySQL性能调优——索引详解与索引的优化 没用
——索引优化,可以说是数据库相关优化.理解尤其是查询优化中最常用的优化手段之一.所以,只有深入索引的实现原理.存储方式.不同索引间区别,才能设计或使用最优的索引,最大幅度的提升查询效率! 一.BTre ...
- logistic growth model . 求解方法 (高斯牛顿法)
https://www.stat.tamu.edu/~jnewton/604/chap4.pdf http://www.metla.fi/silvafennica/full/sf33/sf334327 ...
- jqgrid常用操作
.jqgrid控件列在需要的地方加上edittable=true <asp:JQGrid runat=" DataUrl="/ccr/CcrCompanyPromoterMa ...
- [原创]MongoDB C++ 驱动部分问题解决方案(MongoDB C++ Driver)
本文为我长时间开发以及修改MongoDB C++ Driver时的一些问题和解决方案.目前本文所介绍的相关引擎也已经发布闭源版本,请自行下载 库版本以及相关位置:http://code.google. ...
- 7.python实现高效端口扫描器之nmap模块
对于端口扫描,使用的最多的就是nmap这个工具,不想python已经强大到,提供了nmap这个扫描端口的模块. 本片文章主要介绍nmap模块的两个常用类: PortScanner()类,实现一个nma ...
- 几个SQL小知识(转)
出处:http://www.cnblogs.com/wuguanglei/p/4205976.html 写在前面的话:之前做的一个项目,数据库及系统整体构架设计完成之后,和弟兄们经过一段时间的编码,系 ...
- python核心编程第4章课后题答案(第二版75页)
4-1Python objects All Python objects have three attributes:type,ID,and value. All are readonly with ...