redux-offline 在执行提交或回滚操作时忽略中间件

redux-offline ignore middlewares when executing commit or rollback actions

https://github.com/redux-offline/redux-offline/pull/178#issuecomment-408795302, we are trying to use with redux-offline 所示,一个中间件可以在其对应部分 commitrollback 执行后分派新操作。重点是这些没有派发,经过调试,我们发现在派发初始动作时,中间件被用作 dispatch() 函数(可能是由于 redux composeEnhancers()applyMiddleware() 函数有效,因为它们是链接函数),但是当调度 commit 动作时,它是直接使用存储 dispatch() 方法完成的,因此根本没有执行任何中间件。

我们不完全确定这是我们这边关于 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()
  )
)

是的,offlineapplyMiddleware都是"store enhancers"。当您调用 store.dispatch 时,操作序列将是:

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

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