我正在使用Redux + Middleware创建一个聊天应用程序,并希望在调度ADD_MESSAGE
的操作时使用中间件将对象存储在本地存储对象中:
export function storageMiddleware(store) {
return next => action => {
const result = next(action);
if (action.type === "ADD_MESSAGE") {
// Add to my storage object here
}
return result;
};
}
如果像我这样应用我的中间件:
const store = createStore(
reducer,
applyMiddleware(thunk, chatMiddleware)
)
我想传入我的存储对象storage
,但无法在文档中的任何位置找到如何传递其他参数。我怎么能这样做?
答案 0 :(得分:3)
您需要添加一个级别的函数嵌套才能使其正常工作。 redux-thunk
做同样的事情:
// Middleware definition
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;
// Middleware usage
const store = createStore(
reducer,
applyMiddleware(thunk.withExtraArgument(api))
)