为什么我的 React 函数不等待 SweetAlert 确认?
Why is my React function not waiting for the SweetAlert confirmation?
我试图让 swalDelete 函数等待 SweetAlert 的响应,但我在单击 'Delete' 按钮后立即收到 'doDelete' 日志。如何获取等待响应的日志?我做错了什么?
Locations.js
async function swalDelete(value, canDelete){
let doDelete = await Delete(locationInUseFxn(), canDelete, value);
// doDelete gets logged right after clicking the delete button.
console.log('doDelete', doDelete);
};
<Button
onClick={() => swalDelete(rowData, canDelete)}>Delete</Button>
Delete.js
export const Delete = (inUse, canDelete, value) => {
...
Swal.fire({
title: 'Delete record?',
text: 'This action cannot be undone.',
icon: 'question',
confirmButtonText: 'Delete',
confirmButtonColor: '#DC004E',
showCancelButton: true,
cancelButtonText: 'Cancel',
reverseButtons: true,
focusConfirm: false,
focusCancel: false,
scrollbarPadding: false
}).then((result) => {
return result.isConfirmed;
})
};
Return 来自 Delete
的承诺,因此可以等待。如果没有这个,您的代码只是等待非异步 Delete
函数的 void return (即 Delete
未声明 [=14=] 因此它不会隐式 return一个承诺)。
export const Delete = (inUse, canDelete, value) => {
...
return Swal.fire({ // <-- return Promise
title: 'Delete record?',
text: 'This action cannot be undone.',
icon: 'question',
confirmButtonText: 'Delete',
confirmButtonColor: '#DC004E',
showCancelButton: true,
cancelButtonText: 'Cancel',
reverseButtons: true,
focusConfirm: false,
focusCancel: false,
scrollbarPadding: false
}).then((result) => {
return result.isConfirmed;
});
};
我试图让 swalDelete 函数等待 SweetAlert 的响应,但我在单击 'Delete' 按钮后立即收到 'doDelete' 日志。如何获取等待响应的日志?我做错了什么?
Locations.js
async function swalDelete(value, canDelete){
let doDelete = await Delete(locationInUseFxn(), canDelete, value);
// doDelete gets logged right after clicking the delete button.
console.log('doDelete', doDelete);
};
<Button
onClick={() => swalDelete(rowData, canDelete)}>Delete</Button>
Delete.js
export const Delete = (inUse, canDelete, value) => {
...
Swal.fire({
title: 'Delete record?',
text: 'This action cannot be undone.',
icon: 'question',
confirmButtonText: 'Delete',
confirmButtonColor: '#DC004E',
showCancelButton: true,
cancelButtonText: 'Cancel',
reverseButtons: true,
focusConfirm: false,
focusCancel: false,
scrollbarPadding: false
}).then((result) => {
return result.isConfirmed;
})
};
Return 来自 Delete
的承诺,因此可以等待。如果没有这个,您的代码只是等待非异步 Delete
函数的 void return (即 Delete
未声明 [=14=] 因此它不会隐式 return一个承诺)。
export const Delete = (inUse, canDelete, value) => {
...
return Swal.fire({ // <-- return Promise
title: 'Delete record?',
text: 'This action cannot be undone.',
icon: 'question',
confirmButtonText: 'Delete',
confirmButtonColor: '#DC004E',
showCancelButton: true,
cancelButtonText: 'Cancel',
reverseButtons: true,
focusConfirm: false,
focusCancel: false,
scrollbarPadding: false
}).then((result) => {
return result.isConfirmed;
});
};