Redux中reducer的二级拆分

2023-10-09 16:59
文章标签 redux 二级 拆分 reducer

本文主要是介绍Redux中reducer的二级拆分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

javascript 代码

'use strict';
const Redux = require('redux');
const createStore = Redux.createStore;
const combineReducers = Redux.combineReducers;/*reducers为一个对象,键值与store中state的键值相对应*/
/*合并reducers的内部简要处理逻辑*/
function combineRecucers(reducers) {return function(state, action) {/*返回一个全新的state*/let newState = {};/*进行处理*/for (let key in reducers) {newState[key] = reducers[key](state[key], action)}return newState;}
}function aReducer(state = [], action) {console.log('a');switch(action.type) {case 'a': /*应该返回一个全新的state*/return state.concat([action.data]);default: return state;}
}function bReducer(state = [], action) {console.log('b');switch(action.type) {case 'b': return state.concat([action.data]);default: return state;}
}function cReducer(state = {name: '', group: []}, action) {console.log('c');switch(action.type) {case 'c': /*return {name: cNameReducer(undefined, action),group: cGroupReducer(undefined, action)};*//*对子state进一步进行reducer的拆分合并*/return combineReducers({name: cNameReducer, group: cGroupReducer})(state, action);default: return state;}
}function cNameReducer(state, action) {console.log('c1');if (state === undefined) return '';if (action.type === 'c') {return action.name;} else {return state;}
}function cGroupReducer(state, action) {console.log('c2');if (state === undefined) return [];if (action.type === 'c') {return state.concat([action.item]);} else {return state;}
}/*多个reducer需要与state结构相对应*/
const reducers = {a: aReducer, //会将store中state中的键值 'a' 对应的值传给函数 aReducer的第一个参数b: bReducer, //会将store中state中的键值 'b' 对应的值传给函数 bReducer的第一个参数c: cReducer
};/*合并多个reducer为一个reducer*/
const reducer = combineReducers(reducers);/*第二个参数为初始化store的state*/
const store = createStore(reducer, {a: [111],b: [222],c: {name: '',group: []}
});/*一旦dispatch被触发,subscribe中注册的监听器也会触发*/
store.subscribe(() => {console.log(store.getState());  //获取store中的最新state
})let action = {type: 'a',data: 'exwe'
};let action2 = {type: 'c',name: 'roaming',item: 'code'
};/*每一个dispatch都会将所有的reducer执行一遍*/
store.dispatch(action);
store.dispatch(action2);

这篇关于Redux中reducer的二级拆分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/174280

相关文章

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh

Python进行PDF文件拆分的示例详解

《Python进行PDF文件拆分的示例详解》在日常生活中,我们常常会遇到大型的PDF文件,难以发送,将PDF拆分成多个小文件是一个实用的解决方案,下面我们就来看看如何使用Python实现PDF文件拆分... 目录使用工具将PDF按页数拆分将PDF的每一页拆分为单独的文件将PDF按指定页数拆分根据页码范围拆分

未雨绸缪:环保专包二级资质续期工程师招聘时间策略

对于环保企业而言,在二级资质续期前启动工程师招聘的时间规划至关重要。考虑到招聘流程的复杂性、企业内部需求的变化以及政策标准的更新,建议环保企业在二级资质续期前至少提前6至12个月启动工程师招聘工作。这个时间规划可以细化为以下几个阶段: 一、前期准备阶段(提前6-12个月) 政策与标准研究: 深入研究国家和地方关于环保二级资质续期的最新政策、法规和标准,了解对工程师的具体要求。评估政策变化可

隐私计算实训营:SplitRec:当拆分学习遇上推荐系统

拆分学习的概念 拆分学习的核心思想是拆分网络结构。每一个参与方拥有模型结构的一部分,所有参与方的模型合在一起形成一个完整的模型。训练过程中,不同参与方只对本地模型进行正向或者反向传播计算,并将计算结果传递给下一个参与方。多个参与方通过联合模型进行训练直至最终收敛。 一个典型的拆分学习例子: Alice持有数据和基础模型。Bob只有数据、基础模型和fuse模型。 Alice使用自己的数据

动态规划---单词拆分

题目: 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 思路:本题属于完全背包问题,字符串s的长度为背包容量,字符串列表wordDict中的每一个元素相当于物品。 动态规划五部曲: 1.确定dp数组及含义 dp数组为元素类型是布

JQuery.HoverDir库实现侧边栏二级菜单

Jquery.hoverDir响应鼠标移动方向的悬停效果插件 HTML代码 <div id="sidebar"><div class="mainNavs"><div class="menubox"><div class="menu_main"><h2>技术<span></span></h2><a href="#">Java</a><a href="#">PHP</a><a href="#"

上帝视角Hbase二级索引方案全解析

点击上方蓝色字体,选择“设为星标” 回复”面试“获取更多惊喜 什么是二级索引 Coprocessor 协处理器类型 Coprocessor方案(Phoenix等) Phoenix二级索引特点 非Coprocessor方案 Lily HBase Indexer CDH Search 其他方案 什么是二级索引 HBase中的一级索引指数据在写入region时,会根据rowkey

Python二级知识点--1.1(计算机系统)

以下内容,皆为原创,感谢大家的关注和点赞。 考点:在执行指令的过程中,CPU不经过总线能直接访问的是寄存器 在执行指令的过程中,CPU 不经过总线能直接访问的是内部寄存器。   CPU 内部的寄存器通常与 CPU 的控制单元、算术逻辑单元等紧密集成,它们之间通过内部高速的数据通路进行连接,无需经过外部总线。   这是因为内部寄存器的访问速度对于 CPU 的高效运行至关重要。在指令执行的过程

Qt Qcombox实现二级联动

在QWidget上放两个QComboBox,一个命名为combox_A,另一个命名为combox_B,然后在A上右击“转到槽”,选择“currentIndexChanged(int)”,利用如下函数内容,即可实现两个combox的联动操作。 void YourClass::on_comboBox_A_currentIndexChanged(int index){if (sender() ==

备考MS office 二级

word 1、分页符 布局-分隔符-分节符-下一页:第二张可以不同纸张大小、方向等 2、调整宽度:新文字宽度(字符宽度) 中文版式 3、字符间距 4、文本转换为表格 1、把 || 替换为逗号,方便查找 5、首字下沉 插入 - 首字下沉- 下沉行数3-距正文0 6、邮件合并-标签 编辑域代码:shift+F9 7、图标链