【react】---手动封装一个简易版的redux
2024-10-18 05:05:11
export let createStore = (reducer)=>{
//定义默认的state
let state; //定义默认的action
let actionTypes = "@@redux/INIT"+Math.random();
let initAction = {type:actionTypes} //将所以需要监听的函数放在这个里面
let listeners = [] //定义getState函数
let getState = ()=>state; //定义事件订阅函数
let subscribe = (cb)=>{
listeners.push(cb);
} //定义事件派发函数 用来调用action
let dispatch = (action=initAction)=>{ //调用reducer获取新的state
state = reducer(state,action); //遍历所以需要监听的函数
listeners.map((cb)=>{
cb();
}) }
dispatch(); return {
getState,
dispatch,
subscribe
}
}
最新文章
- JS原生第七篇 (帅哥)
- 微软2017校招笔试题2 composition
- 1.struts2开发流程
- hdu----(1671)Phone List(Trie带标签)
- Android 实现自动接听和挂断电话功能
- java定时任务接口ScheduledExecutorService
- C++ Primer 随笔 Chapter 4 数组和指针
- hdu1166 经典线段入门
- hihoCoder #1234 : Fractal(数学简单题)
- Linux学习记录--匿名沟通渠道
- 201521123074 《Java程序设计》第4周学习总结
- 百度编辑器的内容改变事件监听bug
- yum安装puppet
- 带着新人学springboot的应用13(springboot+热部署)
- mysql 开发进阶篇系列 20 MySQL Server(innodb_lock_wait_timeout,innodb_support_xa,innodb _log_*)
- python队列queue 之优先级队列
- Nodejs学习资源汇总
- Oracle插入(insert into)
- 基于canvas实现的fontawesome动态图标
- Selenium with Python 010 - unittest 框架(又称PyUnit 框架)
热门文章
- IDEA中执行MAVEN命令打jar包
- ubuntu快速部署gitlab汉化容器
- Long Long Ago 二分查找
- Ubuntu 16.04.3 安装jenkins
- .Net Core Web/Console 下使用Nlog
- [NOI2018]你的名字
- ES6---箭头函数()=>;{} 与function的区别(转载)
- 在命令行输入python出现“Warning:This Python interpreter is in a conda environment, but the environment has not been activated. Libraries may fail to load. To activate this environment please see https://conda.
- numpy库补充 mean函数应用
- mac中如何卸载pkg包