Skip to content

中间件定义 ​

本节目标:理解“中间件定义”的核心思路,并能把它用于实际开发或面试表达。 新建一个中间件

Src/redux-thunk.js
function
thunk({
getState,

dispatch })

{
//

调用下一个中间件,next等于store的原始dispatch方法 return function

(next)
{
   //

这个就是改造后的dispatchreturn function

(action)

{if

(typeof

action ===

'function')

{return

action(dispatch,
getState);
   `}`
  `return`
next(action);
 `}`
}
}
export

default

thunk;
Src/redux-logger.js
function
logger({
getState,

dispatch })

{//dispatch

指提改造后的dispatchreturn function

(next)

{return function

(action)

{

console.log('prev
state',
getState());
next(action);
console.log('next
state',
getState());
 `}`
}
}
export

default

logger;
Src/redux-promise.js
/**

* dispatch 重新派发 * next 下一步 * @param {*} param0* @returns

*/
function
promise({
getState,

dispatch }) {return function

(next)

{return function

(action)

{if

(action.then

&& typeof

action.then

===

'function')

{

action.then(dispatch).catch(dispatch);
   `}` `else` `if`
(action.payload

&& typeof

action.payload.then

===

'function')

{

action.payload
.then(payload

=\>

dispatch({
...action,

payload }))

.catch(error

=\> {

dispatch({
...action,

error:

true,

payload: error });return

Promise.reject(error);
       `})`
  `}` `else` `{`
next(action);
   `}`
`}`
}
}
export

default

promise;

本站总访问 — 次