Multiple/bulk 在 react + redux 中删除

Multiple/bulk delete in react + redux

我有一个允许多选和删除功能的数据网格。我的 api;

有一个删除端点

DELETE http://localhost:8888/api/audit/id

这是动作创作者;

export function deleteAudit(audits, callback) {
    let count = 0;
    console.log("selected audits", audits);

    const deleteItem = (auditId) => {
        console.log("deleting..", auditId);

        const endpoint = `http://localhost:8888/api/audit/${auditId}`;
        const req = Axios.delete(endpoint, callback);
        return (dispatch) => {
            req.then(res => {
                if (res.status == HttpStatus.OK) {
                    console.log("deleted", auditId);
                    count += 1;
                    if (audits[count] != null) {
                        deleteItem(audits[count]);
                    }
                    else {
                        console.log("all deleted heading to callback");
                        callback();
                    }
                }
            });
            dispatch({type:DELETE_AUDIT, payload: audits});
        }
    }
    deleteItem(audits[count]);
}

由于我的端点只允许一次删除一项,因此我使用递归函数连续调用。但是,当忽略使用 async(thunk) 方法时,这将无法正常工作,它不会使用新状态刷新列表。 添加 thunk dispatch 方法后,它只删除了第一个选择,所以我完全迷路了。实现这一目标的正确方法是什么?

问题是,我没有导入 redux-thunk 包,导入后,正如 @Tho Vu 在 axios 上指出的那样,我更改了我的代码如下;

export const deleteAudit = (audits, callback) => {

    const request = axios.all(_.map(audits, (audit) => 
    {   
        deleteItem(audit);
    }));
    return (dispatch) => {
        request.then(axios.spread((a, f) => {
            dispatch({type:DELETE_AUDIT, payload:audits});
        })).then(() => {
            callback();
        });
    }
}
function deleteItem(id) {
    const endpoint = `http://localhost:8888/api/audit/${id}`;
    return axios.delete(endpoint);
}