理解和上手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中用的最多 ...
随机推荐
- Flink History Job
history job的写入1. org.apache.flink.runtime.jobmanager,Object JobManagerrunJobManager中指定使用MemoryArchiv ...
- 使用锚点在HTML页面中快速移动
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 【bzoj1787】[Ahoi2008]Meet 紧急集合 倍增LCA
题目描述 输入 输出 样例输入 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 3 1 2 4 4 6 6 6 样例输出 5 2 2 5 4 1 6 0 题解 倍增LCA 首先有集合点 ...
- [洛谷P2482][SDOI2010]猪国杀
题目大意:猪国杀,又一道大模拟题 题解:模拟,对于一个没有玩过三国杀的人来说,一堆细节不知道,写的十分吃力 卡点:无数,不想说什么了,这告诉我要多玩游戏 C++ Code: #include < ...
- Python之利用reduce函数求序列的最值及排序
在一般将Python的reduce函数的例子中,通常都是拿列表求和来作为例子.那么,是否还有其他例子呢? 本次分享将讲述如何利用Python中的reduce函数对序列求最值以及排序. 我们用r ...
- [Leetcode] Recover binary search tree 恢复二叉搜索树
Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...
- taotao单点登录的用户Controller、service(注册、登录、验证是否登录方法)
接口文档: 1.1. 注册接口 1.1.1. 检查数据是否可用 请求方法 GET URL http://sso.taotao.com/user/check/{param}/{type} 参数说明 格式 ...
- Codeforces Round #510 (Div. 2) D. Petya and Array(树状数组)
D. Petya and Array 题目链接:https://codeforces.com/contest/1042/problem/D 题意: 给出n个数,问一共有多少个区间,满足区间和小于t. ...
- HDU4185:Oil Skimming(二分图最大匹配)
Oil Skimming Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- 生日蛋糕 POJ - 1190
7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱.当 ...