избыточное или промежуточное программное обеспечение? - PullRequest
0 голосов
/ 09 января 2019

У меня есть несколько action, после чего мне нужно позвонить другим 2 action.

Мой первый подход - написать middleware, который выглядит следующим образом:

некоторые-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 голосов
/ 09 января 2019

Вы можете настроить функцию базовой отправки с помощью redux-thunk. Еще немного дополнительного кода, и если у вас есть несколько файлов действий, вам нужно импортировать функцию во все из них, но я думаю, что приложение будет более надежным, поскольку вы можете столкнуться с ситуацией, когда вы не хотите отправлять эти файлы. действия.

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

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