其实 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)的更多相关文章

  1. redux超易学三篇之三(一个逻辑完整的react-redux)

    配合源代码学习吧~ : 我是源代码 这一分支讲的是 如何完整地(不包含优化,也没有好看的页面) 搭建一个 增删改查 的 react-redux 系统 不同于上一节的 react-redux,这里主要采 ...

  2. redux超易学三篇之一(单独说redux)

    redux其实非常简单.当复杂的步骤被拆分,其实每一步都是很容易的. Github: 完整代码链接 本文在 create-react-app 中的 index.js 随便引入了一下. (其实不必如此. ...

  3. Redux系列02:一个炒鸡简单的react+redux例子

    前言 在<Redux系列01:从一个简单例子了解action.store.reducer>里面,我们已经对redux的核心概念做了必要的讲解.接下来,同样是通过一个简单的例子,来讲解如何将 ...

  4. React + Redux 入坑指南

    Redux 原理 1. 单一数据源 all states ==>Store 随着组件的复杂度上升(包括交互逻辑和业务逻辑),数据来源逐渐混乱,导致组件内部数据调用十分复杂,会产生数据冗余或者混用 ...

  5. 《手把手教你》系列技巧篇(二十五)-java+ selenium自动化测试-FluentWait(详细教程)

    1.简介 其实今天介绍也讲解的也是一种等待的方法,有些童鞋或者小伙伴们会问宏哥,这也是一种等待方法,为什么不在上一篇文章中竹筒倒豆子一股脑的全部说完,反而又在这里单独写了一篇.那是因为这个比较重要,所 ...

  6. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

  7. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  8. 第三篇 Entity Framework Plus 之 Query Cache

    离上一篇博客,快一周,工作太忙,只能利用休息日来写一些跟大家分享,Entity Framework Plus 组件系列文章,之前已经写过两篇 第一篇 Entity Framework Plus 之 A ...

  9. 我的屌丝giser成长记-研三篇

    进入研三以来,基本都是自己的自由时间了,从导师的项目抽离出来,慢慢的都交给师弟他们来负责.研三的核心任务就是找工作以及写毕业论文,因为有导师科研基金项目成果作为支撑,所以自己的论文没什么可担心,一切都 ...

随机推荐

  1. duck typing

    在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格.在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由"当前方法和属性的集合"决 ...

  2. 安装express.js(NODEJS框架)

    express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板.下面简单来说说express的安装和app.js文件的配置,然后在今后的教程中一步一步使用express.js搭建个 ...

  3. 5-有道爬虫demo(post)

    爬取有道页面,实现中文翻译成英文: #_*_ coding: utf-8 _*_ ''' Created on 2018-7-12 @author: sss 功能:爬取有道翻译 ''' import ...

  4. Docker学习笔记_下载镜像更换为国内源,实现快速下载image

    1.编辑/etc/docker/daemon.json,增加下面内容: { "registry-mirrors": ["https://registry.docker-c ...

  5. Solidity oraclize 常用数据源

    1. 股票数据: https://blog.quandl.com/api-for-stock-data iextrading.com www.nowapi.com 中文 2. 外汇数据: https: ...

  6. PHP加密与解密

    password_hash ( string $password , integer $algo [, array $options ] ) 加密,生成60位得字符串 $algo:一个用来在散列密码时 ...

  7. LINUX 查看CUP温度

    在Linux下可以通过lm_sensors来查看CPU的温度(当然你的硬件首先要支持),要使用这个功能要有内核相关模块(比如I2C)的支持,下面说一下操作方法: 先看一下你的机器上是否安装了lm_se ...

  8. Entity Framework 6.0 Tutorials(10):Index Attribute

    Index Attribute: Entity Framework 6 provides Index attribute to create Index on a particular column ...

  9. 如何恢复VS2013代码实时校验功能

      VS2013在某一天突然无法进行实时代码校验了,只有在编译的时候,错误列表才显示语法错误 怎么来解决这个问题呢?试试环境重置吧. 首先:打开工具菜单,选择“导入和导出设置”. 其次:可以先导出选定 ...

  10. 通过vb.net 和NPOI实现对excel的读操作

    通过vb.net 和NPOI实现对excel的读操作,很久很久前用过vb,这次朋友的代码是vb.net写的需要一个excel的操作, 就顾着着实现功能了,大家凑合着看吧 Option Explicit ...