Appearance
中间件定义
本节目标:理解“中间件定义”的核心思路,并能把它用于实际开发或面试表达。 新建一个中间件
Src/redux-thunk.js
functionthunk({getState,dispatch })
{
//调用下一个中间件,next等于store的原始dispatch方法 return function
(next){
//这个就是改造后的dispatchreturn function
(action){if
(typeofaction ===
'function'){return
action(dispatch,getState); `}`
`return`
next(action); `}`
}
}
exportdefault
thunk;Src/redux-logger.js
functionlogger({getState,dispatch })
{//dispatch指提改造后的dispatchreturn function
(next){return function
(action){
console.log('prevstate',getState());next(action);console.log('nextstate',getState()); `}`
}
}
exportdefault
logger;Src/redux-promise.js
/*** dispatch 重新派发 * next 下一步 * @param {*} param0* @returns
*/
functionpromise({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); `}`
`}`
}
}
exportdefault
promise;