У меня есть список создателей CRUT async action. Моя цель - обновить магазин, но, кроме того, я хотел бы сделать такие вещи, как перенаправление страницы на успешный запрос POST и/или предоставление флеш-сообщений. Вот пример:Рассматривается ли код раздуванием, если у вас несколько диспетчеров в одном создателе действия?
import axios from 'axios';
import { push } from 'react-router-redux';
import { addFlashMessage } from '../actions/flash_message_actions';
import { POSTS_URL, POSTS_ENDPOINT } from '../constants/index';
export function deletePost(id) {
return function (dispatch, getState) {
dispatch({
type: DELETE_POST,
});
return axios.delete(`${POSTS_URL}/${id}`).then(
response => {
dispatch({
type: DELETE_POST_SUCCESS,
response,
});
dispatch(
push(POSTS_ENDPOINT)
);
dispatch(
addFlashMessage('Post Deleted')
);
},
error => dispatch({
type: DELETE_POST_FAILURE,
error,
})
);
};
}
Обратите внимание на три диспетчера выше. Все они имеют определенную цель, но были немного нерешительны, чтобы добавить так много. Основываясь на примерах, которые я видел по всему миру, создатели действий, как правило, тонкие с одним диспетчером.
Кроме того, считается хорошей практикой для отправки действия от совершенно другого шаблона создателя действия? Пример:
import { addFlashMessage } from '../actions/flash_message_actions';
...
dispatch(
addFlashMessage('Post Deleted')
);
Да, для обоих вопросов, это нормально. – azium