使用Redux我正在实现一个外部包,它公开了以下中间件,作为第二个参数,它期望function
返回Promise
const token = () => {
// I want to get some data which is already in the store here.
return fetch('endpoint')
.then((response) => response.text())
}
const createStoreWithMiddleware = applyMiddleware(
middleware({Some: 'Object'}, token)
)(createStore)
我的问题是我需要获取state
中已有的数据,在这种情况下是一个身份验证令牌。有谁知道如何抓住state
?我知道在中间件函数中我可以访问store
,但我不控制这个外部包,所以我坚持使用这种方法签名。
答案 0 :(得分:2)
您可以将外部中间件包装在您自己的中间件中。您自己的中间件为商店提供了token
功能。
假设middleware
函数从redux doc返回一个尊重签名的函数:
const token = store => () => {
// here you can use the store to get the info from the state
return fetch('endpoint')
.then((response) => response.text())
}
const myMiddlewareWithToken = store => next => action => {
middleware({ Some: 'Object' }, token(store))(store)(next)(action);
}
const createStoreWithMiddleware = applyMiddleware(
myMiddleware
)(createStore);