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

淘宝网作图做网站货源一件代发从哪里找

淘宝网作图做网站,货源一件代发从哪里找,建设公司企业网站,江苏建设招标信息网站1. 前言 在原始的redux里面,action必须是plain object,且必须是同步。而我们经常使用到定时器,网络请求等异步操作,而redux-thunk就是为了解决异步动作的问题而出现的。 2. redux-thunk中间件实现源码 function createThunkMidd…
1. 前言

        在原始的redux里面,action必须是plain object,且必须是同步。而我们经常使用到定时器,网络请求等异步操作,而redux-thunk就是为了解决异步动作的问题而出现的。

2. redux-thunk中间件实现源码
function createThunkMiddleware(extra) {return ({ dispatch, getState}) => next => action => {if(typeof action === 'function') {return action(dispatch, getState, extra);}return next(action);        }
}
const thunk = createThunkMiddleware();
thunk.withExtraArgument = createThunkMiddleware;
export default thunk;
2.1 此处dispatch = compose(...chain)(store.dispatch)
  • action(dispatch)中的这个dispatch可能并不是store.dispatch
  • action(dispatch)执行后,如果action函数体使用dispatch({...}),动作{...}也会层层传递下去,直到传递给store.dispatch({...})
  • 举个例子,比如说dispatch= f(g(h(store.dispatch)))),那么action(dispatch)函数体中执行到dispatch({...}),动作传递过程是: f(g(h(store.dispatch)))({...}) -> g(h(store.dispatch))({...}) -> h(store.dispatch)({...}) -> store.dispatch({...})
2.2 此处next的对应关系

        继续举个例子,比如说dispatch = f(g(h(store.dispatch))))

  • 如果当前中间件指向f,则next对应g(h(store.dispatch))
  • 如果当前中间件指向g,则next对应h(store.dispatch)
  • 如果当前中间件指向h,则next对应store.dispatch(真实的dispatch)
3. redux中applyMiddleware方法源码
export const applyMiddleware = (...middlewares) => {return createStore => (reducer, preloadedState) => {const store = createStore(reducer, preloadedState);let dispatch = () => {throw new Error('xxxx');};const middlewareAPI = {getState: store.getState,dispatch: (action, ...args) => dispatch(action, ...args)};const chain = middlewares.map(middleware => middleware(middlewareAPI));dispatch = compose(...chain)(store.dispatch);return {...store,dispatch}}
};export const compose = (...funcs) => {if(funcs.length === 0) {return arg => arg;}if(funcs.length === 1) {return funcs[0];}return funcs.reduce((prev, cur) => {return (...args) => {prev(cur(...args));} });
}
4. redux中createStore增加第3个参数
export const createStore = (reducer, preloadedState, enhancer) => {// 初始化statelet state = preloadedState;// 保存监听函数const listeners = [];// 返回store当前保存的stateconst getState = () => state;// 通过subscribe传入监听函数const subscribe = (listener) => {listeners.push(listener);}// 执行dispatch,通过reducer计算新的状态state// 并执行所有监听函数const dispatch = (action) => {state = reducer(state, action);for(const listener of listeners) {listener();}}!state && dispatch({});if(enhancer) {return enhancer(createStore)(reducer, preloadedState);}return {getState,dispatch,subscribe,}
}

注:以上,如有不合理之处,还请帮忙指出,大家一起交流学习~  

http://www.yayakq.cn/news/479615/

相关文章:

  • 中小企业网站建设与推广品牌营销论文框架
  • 做电商网站报价雷州手机网站建设公司
  • 网站程序上传WordPress中文名字叫什么
  • 网站默认图wordpress影视源码
  • 福州做网站销售公司得物app下载官方版
  • 网站软文是什么第一次做网站时是怎样的心情
  • 深圳专业网站设计公司价格md短视频传媒免费版怎么下载
  • 襄阳网站建设企业软件开发工程师证书图片
  • 电子商务网站如何推广led论坛网站建设
  • 建一个免费网站的流程网站建设公司渠道
  • 网站 授权书浙江网站建设品牌设计
  • 实木餐桌椅移动网站建设门户网站建设总结
  • win2008r2 iis配置网站市场调研公司和咨询公司
  • 上海网站制作 优化设计网站教程
  • 门户网站的功能长春市人才网
  • 简易个人网站精确定时器 wordpress
  • 网站怎么做来卖东西内容营销策略有哪些
  • 北流网站建设制作专业建设的主要内容
  • 普通企业网站建设Wordpress加入php源码
  • 免费的行情软件网站下载如何批量入侵WordPress站
  • 东营企业网站seowordpress生成静态html页面
  • 株洲网站建设推广报价抖音评论点赞自助网站
  • 网站不同唐山制作网站软件
  • 大型电子商务网站建设公司深圳网站建设制作哪家口碑好
  • 设计logo找什么公司长沙网站seo服务
  • 在线网站制作平台程序开发的基本步骤是什么?
  • 台州网站建设方案托管中国建筑人才网是什么网站
  • 飞飞cms悠悠电影网站新闻最新消息
  • 南昌旅游集团网站建设做外贸如何建立网站平台
  • 宁波优质网站制作哪家好用mui做的网站