1

https://github.com/redux-offline/redux-offline/pull/178#issuecomment-408795302所示,我们正在尝试将一个中间件与redux-offline一起使用,该中间件可以在其对应部分之后调度新操作,commit或者rollback是执行。关键是这些没有被调度,在调试之后,我们发现在调度初始动作时,中间件被用作dispatch()函数(可能是由于 reduxcomposeEnhancers()applyMiddleware()function 的工作方式,因为它们是链接函数),但是当commit动作被调度时,它是直接使用 storedispatch()方法完成的,所以根本没有中间件被执行。

我们不完全确定这是我们这边的redux-offline配置错误,还是redux-offline本身的错误......我们的商店配置是这样的:

import { applyMiddleware, compose, createStore } from 'redux'

import reduxOfflineThunkMiddleware from './thunk-middleware'
import rootReducer from '../../reducers'

import { createUser } from '../../actions/user'

const initialState = {}

const windowCompose = (typeof window !== 'undefined') && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
const composeEnhancers = windowCompose || compose

const store = createStore(
  rootReducer,
  initialState,
  composeEnhancers(
    applyMiddleware(reduxOfflineThunkMiddleware({ createUser })),
    offline()
  )
)
4

1 回答 1

4

是的,两者offline都是applyMiddleware“商店增强剂”。当您调用store.dispatch时,操作顺序将是:

  • 由中间件管道中的所有中间件处理
  • 处理者offline
  • 由店铺自行处理

因为offline增强器在applyMiddleware增强器之后,所以它在内部调度的任何操作都不会通过中间件管道。

于 2018-07-30T15:11:34.973 回答