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



如https://github.com/redux-offline/redux-offline/pull/178#issuecomment-408795302,我们正在尝试使用redux离线中间件,该中间件可以在执行其计数器部分commitrollback之后调度新的操作。重点是这些动作没有被调度,经过调试,我们发现在调度初始动作时,中间件被用作dispatch()函数(可能是由于reduxcomposeEnhancers()applyMiddleware()函数的工作方式,因为它们是链接函数的(,但当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()
)
)

是的,offlineapplyMiddleware都是"存储增强器"。当您调用store.dispatch时,操作顺序为:

  • 由中间件管道中的所有中间件处理
  • offline处理
  • 由商店自己处理

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

相关内容

  • 没有找到相关文章

最新更新