当前位置: 首页 > news >正文

对RN中的redux的理解

下面是一个最简单的redux的使用示例:

//定义一个reducer函数,reducer的参数必须是两个,第一个是state对象,第二个参数是action对象。
function aReducerFunction(state = 0, action) {
    switch (action.type) {
        case 'ADD':
            return state + 1
    }
}

//新建store。新建store时的参数为reducer函数。
let store = createStore(aReducerFunction);

//定义一个监听到事件发生后将被调用的函数
let listener = () => {
    currentValue = store.getState();

}

//创建一个监听

store.subscribe(listener);


//分发任务,分发任务的参数就是一个Action对象。
store.dispatch({type:"ADD"});




gyp的理解:


对照oc的NotificationCenter:
注册通知:
[[NSNotificationCenter defaultCenter]  addObserver:self selector:@selector(textChanged:) name:NotiName object:nil];

发送通知:
[[NSNotificationCenter defaultCenter] postNotificationName:NotiName object:nil];

OC的通知思路很清晰也很直观:
1、
注册通知时,申明要监听的通知的名字,并指定收到通知后处理通知的
函数,此函数的参数为通知传过来的对象。
2、
发送通知时,指定要发送通知的名称和通知的参数。

redux的思路比起NSNotificationCenter(NC)则真的是很清奇。
redux的store可以类比为NSNotificationCenter。

关键在于create store的时候,要求传入的参数:reducer函数,
这时,store将增加一个属性,按redux的命名, store增加的这个属性称为state。

在dispatch一个事件后,reducer首先被掉用,reducer的参数正是dispatch事件时的参数:action。

reducer可以根据action的type属性,生成一个新的state替换store中原来的state。

最后,注册到store中的listener函数被调用,listener可以从store中
取到新的state。

相关文章:

  • mac输入拼音的方法
  • 人间繁华江上明月,乃浮生一梦,惟真情长在——读沈君山《浮生再记》(并转书评)...
  • 无题
  • Xcode中delete键不可用了
  • [软工]说不
  • iOS 虚拟机 和mac间互相拷贝
  • 10月13日hibernate培训日记
  • Cheat Sheet的意思
  • react native把License改成MIT了
  • 10月14日~15日Oracle培训日记
  • objective-c中使用不定参数
  • 如何让2007Office兼容低版本的文档?
  • 对redux的理解
  • 从错误信息思考一个问题:.NET Framework 与 COM/COM+ 到底有多深入的关联呢?
  • 两年后小米市值在100亿美元以下
  • ES6 学习笔记(一)let,const和解构赋值
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript的使用你知道几种?(上)
  • Java应用性能调优
  • js对象的深浅拷贝
  • js作用域和this的理解
  • MySQL QA
  • Netty源码解析1-Buffer
  • QQ浏览器x5内核的兼容性问题
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • spring security oauth2 password授权模式
  • Vue2.0 实现互斥
  • Zsh 开发指南(第十四篇 文件读写)
  • 从输入URL到页面加载发生了什么
  • 给初学者:JavaScript 中数组操作注意点
  • 配置 PM2 实现代码自动发布
  • 扑朔迷离的属性和特性【彻底弄清】
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 跳前端坑前,先看看这个!!
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • # 飞书APP集成平台-数字化落地
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • $(function(){})与(function($){....})(jQuery)的区别
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (一)RocketMQ初步认识
  • ****Linux下Mysql的安装和配置
  • .mysql secret在哪_MySQL如何使用索引
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET Core 和 .NET Framework 中的 MEF2
  • .net(C#)中String.Format如何使用