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);
}
我有一个允许多选和删除功能的数据网格。我的 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);
}