Giao diện
useConfirm
Hộp thoại xác nhận dạng promise: await confirm(...) trả true khi người dùng đồng ý, false khi huỷ hoặc đóng.
Dùng khi: hành động không hoàn tác được — xoá, huỷ đơn, thu hồi, gửi duyệt.
Không dùng khi: hành động bình thường có thể làm lại. Hỏi lại quá nhiều khiến người dùng bấm "Đồng ý" theo phản xạ, đúng lúc cần đọc thì họ không đọc nữa.
Dùng
ts
import { useConfirm } from '@tasco/ui'
const confirm = useConfirm()
async function remove(order: Order) {
const ok = await confirm({
title: 'Xoá đơn hàng?',
content: `Đơn ${order.code} sẽ bị xoá vĩnh viễn.`,
okText: 'Xoá đơn',
danger: true,
})
if (!ok) return
await removeOrder(order.id)
message.success('Đã xoá đơn hàng.')
}useConfirm nằm ở @tasco/ui (phụ thuộc antd Modal) nên không được auto-import — luôn phải import.
Tuỳ chọn
| Khoá | Mặc định | Ghi chú |
|---|---|---|
title | Xác nhận | Câu hỏi — viết dạng câu hỏi có đối tượng cụ thể |
content | — | Hệ quả của hành động |
okText | Đồng ý | Nên là động từ của hành động ("Xoá đơn") |
cancelText | Huỷ | |
danger | false | Nút đồng ý màu nguy hiểm |
Viết câu hỏi
| Tránh | Viết thay |
|---|---|
| "Bạn có chắc không?" | "Xoá đơn DH-0001?" |
| "Thao tác này không thể hoàn tác." | "Đơn DH-0001 sẽ bị xoá vĩnh viễn và không khôi phục được." |
| Nút "OK" | Nút "Xoá đơn" |
Nêu đối tượng bị tác động và số lượng khi làm hàng loạt: "Xoá 12 đơn hàng đã chọn?".
Lưu ý
- Chỉ dùng cho việc phá huỷ. Xác nhận cho thao tác thường là tiếng ồn.
- Hộp thoại không tự chạy hành động: người gọi kiểm tra kết quả rồi mới thực hiện.
- Hành động chạy lâu thì sau khi xác nhận nên khoá nút và hiện trạng thái — hộp thoại đóng ngay khi bấm.
- Cần form nhập thêm (lý do huỷ) thì dùng
CModalvới nội dung riêng, không dùnguseConfirm.
Liên quan
useErrorHandler— hiển thị lỗi sau khi hành động thất bại.- Trang chi tiết — mẫu hành động xoá.