Redux中间件访问商店

时间:2016-11-15 22:29:56

标签: javascript reactjs redux react-redux

使用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,但我不控制这个外部包,所以我坚持使用这种方法签名。

1 个答案:

答案 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);