2017-01-13 18 views
0

У меня есть список создателей 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') 
); 
+0

Да, для обоих вопросов, это нормально. – azium

ответ

0

Я думаю, что жизнь станет проще, если вы реализуете актер редукции, чтобы вам не приходилось отправлять действия один за другим.

Редюкс-актер принимает две функции состояния и диспетчеризации, и после того, как действие уволено, все действия внутри актера становятся триггерами в то время, когда вам не нужно отправлять действие один за другим.

относятся: http://jamesknelson.com/join-the-dark-side-of-the-flux-responding-to-actions-with-actors/

+0

Можете ли вы предоставить пример, основанный на моем коде? Я прочитал статью, но все еще немного смущен. –