многократная отправка в редукционном действии - PullRequest
0 голосов
/ 28 мая 2018

Я хотел отправить действие из другого действия, но не смог этого сделать.Когда я пытаюсь сделать это, он не может найти getAllUser метод.Ниже мой класс действий.

    export const myActions = {

        getAllUser() {
            return (dispatch) => {
                makeApiCall()
                    .then((response) => {
                        dispatch({
                            type: USER_SUCCESS,
                            payload: response,
                        });
                    })
                    .catch((error) => {
                        dispatch({
                            type: USER_FAILURE,
                            payload: error,
                        });
                    });
            };
        },

        addUser(user) {
            return (dispatch) => {
                makeApiCall(user)
                    .then((response) => {
                        /*
                        Need help here : 
                        wants to call above getAllUser()
                           .then(() => 
                              dispatch({
                                 type: ADD_SUCCESS,
                                 payload: response,
                              });
                            )
                        */
            };
        },
    };

Я пробовал различные подходы, такие как,

myActions.getAllUser()
    .then((response) => 
       dispatch({
           type: ADD_SUCCESS,
           payload: response,
       });
    );

и пытаюсь сделать диспетчеризацию напрямую,

        const self = this;
        dispatch(self.getAllUser());
        dispatch({
            type: ADD_SUCCESS,
            payload: response,
        });

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

1 Ответ

0 голосов
/ 28 мая 2018

Вы можете экспортировать функции по отдельности, вместо того, чтобы заключать их в один и тот же объект:

export const getAllUser = () => dispatch => { ... }

export const addUser = () => dispatch => { 
  ... 
  dispatch(getAllUser());
}

При желании вы можете импортировать их все:

import * as myActions from '...';

Или вы можете объявить getAllUser сначала добавьте к myActions, но вышеупомянутое решение намного чище.

const getAllUser = ...
const myActions = {
  getAllUser,
  addUser = ... { dispatch(getAllUser()) }
}
...