У меня несколько action, после чего я должен вызвать еще двум action.
Мой первый подход - написать middleware, который выглядит так:
some-middleware.js
const actions = {
[POST_CATEGORIES_SUCCESS]: 1,
[SET_READING_TIME_SUCCESS]: 1
}
export default store => next => action => {
// console.info("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())
}
Это означает, что код будет повторяться каждый раз, когда мне нужно отправить эти два действия.
Я что-то упустил во всем этом? Правильный ли подход к промежуточному программному обеспечению?





Вы можете настроить базовую функцию отправки с помощью redux-thunk. Еще немного дополнительного кода, и если у вас есть несколько файлов действий, вам нужно будет импортировать функцию во все из них, но я думаю, что приложение будет более надежным, так как вы можете столкнуться с ситуацией, когда вы не хотите отправлять эти файлы. действия.
export const baseDispatch = (action) => (dispatch) => {
dispatch(action)
dispatch(resetStories())
dispatch(getStories())
}
export const postCategories = (categories) => (dispatch) => {
dispatch(baseDispatch(fetchPostCategories(categories)));
}