前言
redux-call
是一款基于redux-thunk扩展的redux插件,旨在简化异步操作的处理流程,使得代码更易读易维护。在本文中,我们将介绍如何使用redux-call
来简化异步操作的处理流程。
安装
首先,我们需要先安装redux
以及redux-call
:
npm install redux redux-call
基本用法
redux-call
的基本使用方法非常简单,只需要在createStore
方法中将其作为参数传递即可。比如,我们可以先创建一个action creator来发起异步操作:
-- -------------------- ---- ------- -- ---------- ------ - ------------ - ---- ---------------- ----- --------- - -------------------------- -------- -- - -- ---- ------ --------------------------------------------------------------- -- ----------------- --- ------ ------- - --------- --
然后,在创建store时,将redux-thunk
和redux-call
作为中间件传入:
-- -------------------- ---- ------- -- -------- ------ - ------------ --------------- - ---- -------- ------ ----- ---- -------------- ------ - -------------- - ---- ------------- ------ ----------- ---- ------------- ----- ----- - ------------ ------------ ---------------------- --------------- --
这样,在组件中,我们就可以愉快的使用fetchUser
这个action creator了:
-- -------------------- ---- ------- -- ------ ------ ------ - --------- - ---- -------- ------ - ------- - ---- -------------- ------ ------- ---- ------------ ----- --- ------- --------- - ------------------- - -------------------------------- - -------- - ----- - ---- - - ----------- ------ - ----- --- ------ --- ------ -- - - ----- --------------- - ----- -- -- ----- ---------- --- ------ ------- ------------------------ --------------
实现原理
redux-call
的核心思想就是将异步操作封装成一个函数,然后通过redux的dispatch方法触发这个函数执行。在这个函数中,我们可以使用关键字yield
来暂停函数执行,并返回一个promise
对象,等待异步操作完成后再继续执行函数。
在实际的代码中,redux-call
使用了babel-plugin-transform-regenerator
实现了yield
关键字的编译。
进阶用法
除了基本用法外,redux-call
还有一些高级用法,比如使用put
来分发其他的action。在上述的例子中,我们可以通过put
来触发FETCH_USER_SUCCESS
这个action,从而更新用户信息:
-- -------------------- ---- ------- -- ---------- ------ - ------------ - ---- ---------------- ----- --------- - -------------------------- -------- -- - -- ---- ------ --------------------------------------------------------------- -- ----------------- --- ----- ---------------- - ---------------------------------- ---- -- ------ --------- ----------------------- - --- - ----- ---- - ----- --------------- ---------------- ----- ---------------------------- - ----- ------- - -- ---- - - ------ ------- - ---------- --------------- --
在上述代码中,我们定义了一个以worker
开头的函数,用来处理具体的异步操作。当我们使用fetchUser
这个action creator时,实际上是调用了这个worker
函数。在worker
函数中,我们使用了call
来调用了异步操作,并使用put
来分发了另外一个action,用以更新数据。
总结
本文介绍了redux-call
这个npm包的基本使用方法,并且讲解了它的实现原理以及进阶用法。相信大家通过学习本文后,能够使用redux-call
更加方便地处理异步操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600566b381e8991b448e2fc6