理解和上手Redux
顾名思义本文分两个部分,理解和上手,第一部分我先讲个故事,这个故事也许不是特别形象,但对大家理解Redux一定有所帮助。第二部分我举个例子。
先讲个故事:
一个餐厅(应用),我是顾客(用户),这个餐厅很特殊,Redux帮老板设计了一套非常科学的食材管理系统:餐厅门口有很多小液晶面板(react组件),每个液晶面板上显示一种食材的剩余数量(数据),餐厅的所有食材都存放在一个智能冷库(redux 的 store)。看到我爱吃的东西都还有,我就走进去坐了下来,桌面上一张一次性菜单,我拿起笔在上面勾选(action)一份牛排一份鸡胸,我叫来服务员,服务员把我点的单子拿到厨房(dispath)贴到智能冷库(store)上。冷库通知对应的厨师(reducer)拿食物做菜。餐厅很大,每道菜都有固定的厨师来做,冷库很聪明,要做什么菜就能找到对应的厨师。厨师把牛排从冷库拿出来,厨师不能告诉冷库我拿了一块牛排,他要告诉冷库牛排还剩几块(新state 更新旧 state),这时候那块显示牛排还剩几块的液晶面板也更新了,这块面板连接(订阅)的就是冷库中牛排对应的数据。我还注意到旁边有块很大的屏幕,显示了所有饮料的数据,所有饮料库存数据更新,屏幕都会更新。
Action creators就是那一次性菜单,我想吃什么直接勾选就行了,但是没有也没关系,我可以在白纸上写啊,效果一样。你还可以注意到一点,你可以看到牛排还剩几块,但只有厨师可以把牛排从冷库拿出来。
下面举个例子:
Redux就是个数据中心,不依附于任何框架在哪使用都行。但是和它最搭配的应该就是React了,而且大家学习它的动力大多也是解决React状态管理的问题。都说Redux文档详尽清晰,但我感觉并不友好,它没有用最简单直观的方式告诉你如何搭配React使用。研究了两天的文档和示例,终于在项目中用上了我认为原本10分钟就能上手的Redux。当然,这两天去了解Redux的方方面面和相关的东西是值得的,只不过我喜欢先上手一个知识再去详细了解它,而不是反过来。如果你和我一样,那看完我写的这个小程序绝对是值得的。
关于我的这段程序解释几点:1. 功能超简单根本用不上Redux,但我强行用一下单纯为了介绍Redux怎么用。2. 和官方示例counter功能相似且更简单,但官方示例并没有详细的解释,而且没有和React绑定使用,如果你不了解Redux看完了你还是迷糊,我的这段程序就是为了让你不迷糊。3. 解释部分在注释,部分名词和官方有出入但不影响,只是我的理解。4. 欢迎指正。

总结一下,数据处理器的集合生成一个数据中心,connect把旧组件替换成已经连接到数据中心的新组件(传入需要监听的数据),需要更新数据调用this.props.dispatch方法传入action,可以写一些动作生成器管理action。完事。
理解和上手Redux的更多相关文章
- 深入理解React、Redux
深入理解React.ReduReact+Redux非常精炼,良好运用将发挥出极强劲的生产力.但最大的挑战来自于函数式编程(FP)范式.在工程化过程中,架构(顶层)设计将是一个巨大的挑战.要不然做出来的 ...
- 如何理解 Redux?
作者:Wang Namelos 链接:https://www.zhihu.com/question/41312576/answer/90782136 来源:知乎 著作权归作者所有,转载请联系作者获得授 ...
- 对于Redux的理解
在移动端项目,经常会在不同view中进行传递数据,事件.当事件比较少时,我们可以通过常规的事件流方法,注册,发布事件 进行响应等等.但是项目中一个事件多处响应时候,就会使程序变得相当复杂.在现在的Vu ...
- 理解 React,但不理解 Redux,该如何通俗易懂的理解 Redux?
作者:Wang Namelos链接:https://www.zhihu.com/question/41312576/answer/90782136来源:知乎著作权归作者所有.商业转载请联系作者获得授权 ...
- 理解 React,但不理解 Redux,该如何通俗易懂的理解 Redux?(转)
作者:Wang Namelos 链接:https://www.zhihu.com/question/41312576/answer/90782136来源:知乎 解答这个问题并不困难:唯一的要求是你熟悉 ...
- 通俗易懂的理解 Redux(知乎)
1. React有props和state: props意味着父级分发下来的属性[父组件的state传递给子组件 子组件使用props获取],state意味着组件内部可以自行管理的状态,并且整个Rea ...
- Redux状态管理方法与实例
状态管理是目前构建单页应用中不可或缺的一环,也是值得花时间学习的知识点.React官方推荐我们使用Redux来管理我们的React应用,同时也提供了Redux的文档来供我们学习,中文版地址为http: ...
- Redux教程1:环境搭建,初写Redux
如果将React比喻成士兵的话,你的程序还需要一位将军,去管理士兵(的状态),而Redux恰好是一位好将军,简单高效: 相比起React的学习曲线,Redux的稍微平坦一些:本系列教程,将以" ...
- 【前端】react and redux教程学习实践,浅显易懂的实践学习方法。
前言 前几天,我在博文[前端]一步一步使用webpack+react+scss脚手架重构项目 中搭建了一个react开发环境.然而在实际的开发过程中,或者是在对源码的理解中,感受到react中用的最多 ...
随机推荐
- new String(str.getBytes(“gbk”),“gbk”)的用法详解
new String(str.getBytes(“gbk”),“gbk”)的用法详解 前提是str存放的是汉字 一.如果是new String(str.getBytes(“gbk”),“gbk”)时, ...
- 【bzoj2815】[ZJOI2012]灾难 拓扑排序+倍增LCA
题目描述(转自洛谷) 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难. 学过生物 ...
- 高性能服务器开发之C++定时器
高性能服务器开发之C++定时器 来源: https://www.cnblogs.com/junye/p/5836552.html 写这篇文章前搜了下网上类似的文章,有很多,所以笔者的这篇文章就不对定时 ...
- thymeleaf 布局layout
以前写过一篇使用thymeleaf实现div中加载html 大部分内容都没问题,只是部分知识已经过时了. 重新记录: 依赖依然是 <dependency> <groupId>n ...
- 洛谷P3763 [Tjoi2017]DNA 【后缀数组】
题目链接 洛谷P3763 题解 后缀数组裸题 在BZOJ被卡常到哭QAQ #include<algorithm> #include<iostream> #include< ...
- 支持jsonP的Controller写法
支持jsonP的Controller写法 package com.taotao.sso.controller; import org.apache.commons.lang3.StringUtils; ...
- POJ3189:Steady Cow Assignment(二分+二分图多重匹配)
Steady Cow Assignment Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7482 Accepted: ...
- Codeforces Round #478 C. Valhalla Siege
C. Valhalla Siege time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Struts2 利用拦截器 interceptor 控制登陆和访问权限
最近学习了Struts2的登录和权限控制用到的是拦截器,需要在struts.xml中配置,每个action都默认的继承defaultStack,如果你用了别的拦截器,还需要手动引入defaultSta ...
- CSS3 3D 转换
CSS3 允许您使用 3D 转换来对元素进行格式化. 在本章中,您将学到其中的一些 3D 转换方法: rotateX() rotateY() rotateX() 方法 rotateX()方法,围绕其在 ...