博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【redux篇】middleware 之 redux-thunk
阅读量:7037 次
发布时间:2019-06-28

本文共 1056 字,大约阅读时间需要 3 分钟。

【redux篇】middleware 之 redux-thunk

之前每件事都差不多,直到现在才发现差很多。

现在才发现理清一件事的原委是多么快乐的一件事,我们共同勉励。

懒得扯淡,直接正题

不基于例子的讲原理都是扯淡,知乎一样的举例都是卖弄

redux-thunk 函数签名

middleware 接受 Store 的 dispatch 和 getState 函数作为命名参数,并返回一个函数。该函数会被传入 被称为 next 的下一个 middleware 的 dispatch 方法,并返回一个接收 action 的新函数,这个函数可以直接调用 next(action),或者在其他需要的时刻调用,甚至根本不去调用它。调用链中最后一个 middleware 会接受真实的 store 的 dispatch 方法作为 next 参数,并借此结束调用链。

({ getState, dispatch }) => next => action

在写redux时,经常会使用中间件 redux-thunk 和 redux-promise 等,在使用 redux-thunk 时,经常对 dispatch 一个函数很有疑问,action 返回的函数中的参数 dispatch 和 getState 是怎么传递进来的。

源码分析

function createThunkMiddleware(extraArgument) {  return ({ dispatch, getState }) => next => action => {    if (typeof action === 'function') {      return action(dispatch, getState, extraArgument);    }    return next(action);  };}const thunk = createThunkMiddleware();thunk.withExtraArgument = createThunkMiddleware;export default thunk;

从上面的源码可以看到在函数内部:

  • 如果 action 是一个函数,则调用 dispatch 的 action 函数,传递 dispatch 和 getState;
  • 如果 action 是一个对象,直接调用 dispatch action。

由此可见 redux-thunk 既可以处理函数也可以处理对象。

引用

转载地址:http://okfal.baihongyu.com/

你可能感兴趣的文章
PHP5.6中php-fpm的配置、启动、关闭和重启
查看>>
通过HTML5 FileReader实现上传图片预览功能
查看>>
webpack 编译图片文件 file-loader
查看>>
跟着弦哥学人工智能3—对喷子的回复
查看>>
深入浅出JMS(四)----Spring和ActiveMQ整合的完整实例
查看>>
ElasticSearch集群本机搭建
查看>>
QRCode二维码生成方案及其在带LOGO型二维码中的应用(1)
查看>>
XamarinSQLite教程添加测试数据
查看>>
智课雅思短语---一、be no exception
查看>>
python2/3 中删除字典中value为空的键值对方法
查看>>
【C++】纯C++实现http打开网页下载内容的功能
查看>>
自定义 Django的User Model,扩展 AbstractUser类注意事项
查看>>
vc/vs开发的应用程序添加dump崩溃日志<转>
查看>>
jQuery插件之ajaxFileUpload
查看>>
Mysql delete,truncate,drop
查看>>
RHEL/CentOS/Fedora各种源(EPEL、Remi、RPMForge、RPMFusion)配置
查看>>
c#初学-使用 Override 和 New 关键字进行版本控制(C# 编程指南)
查看>>
读Ext之二(实用方法)
查看>>
HTML中解决双击会选中文本的问题
查看>>
CentOS 安装apache
查看>>