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

相关文章

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

对于环保企业而言,在二级资质续期前启动工程师招聘的时间规划至关重要。考虑到招聘流程的复杂性、企业内部需求的变化以及政策标准的更新,建议环保企业在二级资质续期前至少提前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、图标链

计算机二级真题--程序设计大题 章节

1.计算sum的时候一般用double类型而不是int类型(要注意看题目中的格式) 2.判断素数是设置一个变量使其从2开始无论如何变化都不被输入的值整除,即都不为0即可 3.求最值思路,将一组数据中的第一个元素设置为最大值最小值,然后让这个元素和其他元素对比 则后面的数组需要从i=1开始循环 4.记得将指针初始化为0 5.如果初始化S则需要给其赋值,比如赋值0或者1; 6.如果返回的是

代码随想录:343. 整数拆分

343. 整数拆分   class Solution {public:int integerBreak(int n) {int dp[100]={0};//拆分i的最大乘积为dp[i]dp[1]=1;//初始化,主要是为了dp[2]初始for(int i=2;i<=n;i++){for(int j=1;j<i;j++){ dp[i]=max(dp[i],max(j,dp[j])*ma