redux-thunk还是中间件?

时间:2019-01-09 17:38:41

标签: reactjs redux redux-thunk

我有多个action,之后我必须打另外2个action

我的第一种方法是编写一个看起来像这样的middleware

some-middleware.js

const actions = {
  [POST_CATEGORIES_SUCCESS]: 1,
  [SET_READING_TIME_SUCCESS]: 1
}

export default store => next => action => {

  // console.log("calling auth middleware", action)

  // Reset any session data before SIGNUP or LOGIN request
  if (actions[action.type] === 1) {
    store.dispatch(resetStories())
    store.dispatch(getStories())
  }


  return next(action)

}

另一种方法是放

    store.dispatch(resetStories())
    store.dispatch(getStories())

在两个redux-thunk之内

export const postCategories = (categories) => (dispatch) => {
  dispatch(fetchPostCategories(categories))
  store.dispatch(resetStories())
  store.dispatch(getStories())
}

export const setReadingTime = (readingTime) => (dispatch) => {
  dispatch(fetchReadingTime(readingTime))
  store.dispatch(resetStories())
  store.dispatch(getStories())
}

这意味着每次我需要分派这两个动作时,都重复代码。

我是否错过了所有这些东西?中间件方法正确吗?

1 个答案:

答案 0 :(得分:0)

您可以使用redux-thunk设置基本调度功能。还有一些额外的代码,如果您有多个操作文件,则需要将功能导入到所有文件中,但是我认为该应用程序会更强大,因为您可能会遇到不想分派这些文件的情况动作。

export const baseDispatch = (action) => (dispatch) => {
  dispatch(action)
  dispatch(resetStories())
  dispatch(getStories())
}

export const postCategories = (categories) => (dispatch) => {
  dispatch(baseDispatch(fetchPostCategories(categories)));
}