簡體   English   中英

Redux雙重行動

[英]Redux double dispatch of action

我在必須如何在同一函數中分派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)

謝謝!

由於函數deleteItem返回一個函數,因此您可以通過調用以下命令來分派它:

deleteItem(items[0])(dispatch)

您已經在使用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
            });
        };
}

您可以創建一個中間件並偵聽操作類型UPDATE_ITEM,然后調度DELETE_ITEM

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM