redux其实非常简单。当复杂的步骤被拆分,其实每一步都是很容易的。

Github: 完整代码链接

本文在 create-react-app 中的 index.js 随便引入了一下。

(其实不必如此。测试环境支持 export/import 即可开展)

其实,redux不过就是一个数据库罢了。


action + reducer + store

行为 + 规则 + 历史/结果。

以追女孩子为例子

想寻你喜欢的女孩子。你想好了你要怎么做,你仿佛也看到了这么做的后果。 那么,你准备好开始了吗?


1.action (我们在行为中添加一个 固定的常量来命名,来诠释我们的生命)

你的每一个行为,依据规则,进行执行,从而改变了你的人生轨迹。

action 是我们定义的行为结构。由 type 和 你自己定义的数据构成的一个对象。

// 一些变量罢了。
export const MIRACLE = 'MIRACLE';
export const GROW = 'GROW';
export const PEOPLETAG = {
student: 'student',
adult: 'adult',
child: 'child'
}; // 也许你不曾创造奇迹,但,有何不可?
export const makeMiracle = (text) => {
return {
type: MIRACLE,
text
};
}; // 人类的成长行为
export const startGrow = (growType) => {
return {
type: GROW,
growType
};
};

成长 是我们生命中必定会进行的行为,时间让我们成长。

2.reducer (有时候,努力并不一定会成功,我们要顺应规则。或者,打破规则。reducer是我们的规则。)

reducer 是我们定义的一个 行为对应的规则。你的行为会给你带来什么改变?

import {GROW, MIRACLE, PEOPLETAG} from './actions';
import {makeMiracle, startGrow} from './actions'; // 人生的一开始,是一张白纸
const whitePaper = {
girlFriend: [],
miracle: [],
identity: PEOPLETAG.child
}; // 于是我们人生的旅途开始了
export const YourLife = (state = whitePaper, action) => {
switch (action.type) {
case GROW:
return Object.assign({}, state, {
identity: action.growType
});
case MIRACLE:
return Object.assign({}, state, {
miracle: [
...state.miracle,
{
text: action.text
}
]
});
default:
return state;
}
};

3.store (每个人的历史都值得被尊重。你就是你,唯一的你。)

store是 一个完善的 人生系统。它是 action 和 reducer 的实际操作。

想寻你喜欢的女孩子。你想好了你要怎么做,你仿佛也看到了这么做的后果。 那么,你准备好开始了吗?
import {createStore} from 'redux';
import {YourLife} from './reducer';
import {PEOPLETAG} from './actions';
import {makeMiracle, startGrow} from './actions'; let store = createStore(YourLife); // 监听人生的每一次变化
const unsubscribe = store.subscribe(() => {
console.log(store.getState());
}); store.dispatch(makeMiracle('做了一个mad'));
// 人长大了
store.dispatch(startGrow(PEOPLETAG.adult)); // 停止监听
unsubscribe();

最新文章

  1. 大量无线键盘存在KeySniffer漏洞-可嗅探用户输入的内容
  2. KMP字符串匹配算法
  3. 利用Java Service Wrapper将java项目添加到windows服务中
  4. 命令行重新安装.net framework
  5. android-exploitme(四):参数篡改
  6. Android Studio:Error:Execution failed for task ':app:mergeDebugResources'. > Some file crunching failed, see logs for details
  7. fiddler---使用方法1--抓取手机app包
  8. 优化Java堆大小5温馨提示
  9. iframe 自适应内容高度
  10. mongodb备份还原脚本
  11. C语言字符/字符串相关函数收藏
  12. EF Core 生成数据库
  13. bzoj 2427
  14. android-----带你一步一步优化ListView(一)
  15. 入手IntelliJ IDEA 常用配置
  16. [android] 切换按钮-自定义控件
  17. oracle之 手动创建 emp 表 与 dept 表
  18. JdbcTemplate实现CRUD操作
  19. c++刷题(12/100)无序数组中和为定值的最长子数组
  20. 【数据库】:关于DB2数据库错误提示说明

热门文章

  1. iPython notebook 安装使用
  2. dataTable写入数据库(大数据写入)
  3. Docker学习之路(三)Docker网络详解
  4. 1、python与ipython的下载与安装
  5. 500 Internal Server Error
  6. EF 常见语句以及sql语句简单 后续继续添加
  7. Linux命令累积
  8. css总结1:position定位:absolute/relative/fixed
  9. 关于modelsim闪退问题
  10. .netcore2.0 Startup 全局配置文件小技巧