Skip to content

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 địnhGhi chú
titleXác nhậnCâu hỏi — viết dạng câu hỏi có đối tượng cụ thể
contentHệ quả của hành động
okTextĐồng ýNên là động từ của hành động ("Xoá đơn")
cancelTextHuỷ
dangerfalseNút đồng ý màu nguy hiểm

Viết câu hỏi

TránhViế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 độngsố 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 CModal với nội dung riêng, không dùng useConfirm.

Liên quan