Redux двойная рассылка действий - PullRequest
0 голосов
/ 14 марта 2019

У меня проблемы с тем, как я должен отправить 2 действия в одной и той же функции:

Начальная функция:

export function updateItem(item){
        return function (dispatch, getState) {
           let items = getState().ItemReducer.items;
            if(item.id_type === 519){
                deleteItem(items[0]);
            }
            return dispatch({
                type:"UPDATE_ITEM",
                item: item
            });
        };
}

Второе действие, которое я должен назвать:

export function deleteItem(item){
    return (dispatch) => {
        deleteItemApi(item);
        dispatch({
            type: "DELETE_ITEM",
            item: item
        })
    }
}

Эта функция используется где-то еще и работает нормально, но я не знаю, как ее использовать, поскольку у меня уже есть return function (dispatch, getState)

Спасибо тебе!

Ответы [ 3 ]

3 голосов
/ 14 марта 2019

Поскольку функция deleteItem возвращает функцию, вы можете отправить ее, вызвав:

deleteItem(items[0])(dispatch)

1 голос
/ 14 марта 2019

Вы уже используете redux-thunk (создатели действий могут возвращать действия ИЛИ функцию ), поэтому вы можете просто сделать это, отправив создателю действия, который возвращает функцию, которая возвращает действие:

export function updateItem(item){
        return function (dispatch, getState) {
           let items = getState().ItemReducer.items;
            if(item.id_type === 519){
                dispatch(deleteItem(items[0]));   //  <----------
            }
            return dispatch({
                type:"UPDATE_ITEM",
                item: item
            });
        };
}
0 голосов
/ 14 марта 2019

вы можете создать промежуточное ПО и прослушать действие типа UPDATE_ITEM, а затем отправить свой DELETE_ITEM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...