Giới thiệu TanStack Hotkeys

TanStack Hotkeys là thư viện giúp bạn thêm phím tắt bàn phím vào ứng dụng web. Bạn dùng nó khi dashboard, editor, command palette hoặc trang quản trị cần thao tác nhanh bằng bàn phím. TanStack Hotkeys phù hợp với React và Next.js vì thư viện cung cấp hook như useHotkey, useHotkeySequence, useHotkeyRecorder, useKeyHold và các hàm hiển thị shortcut như formatForDisplay.
TanStack Hotkeys đang được ghi nhãn alpha trên tài liệu chính thức. Nếu dùng cho production, hãy kiểm tra kỹ hành vi phím tắt, khả năng truy cập và thay đổi API khi nâng phiên bản.

Khi nào nên dùng

Tính năng chính

Cài đặt

1

Cài package React

Chạy lệnh sau trong dự án Next.js:
2

Dùng trong client component

Các hook của TanStack Hotkeys cần chạy trong browser, nên component phải có directive use client.

Ví dụ cơ bản

Ví dụ dưới đây thêm shortcut Mod+S. Trên macOS, người dùng bấm Command+S. Trên Windows/Linux, người dùng bấm Control+S.
useHotkey mặc định gọi preventDefaultstopPropagation. Vì vậy Mod+S sẽ chạy hàm onSave thay vì mở hộp thoại lưu trang của trình duyệt.

Scope shortcut theo vùng giao diện

Khi shortcut chỉ nên chạy trong một panel hoặc form cụ thể, truyền target bằng ref.

Bật tắt shortcut theo trạng thái

Dùng enabled khi shortcut chỉ hợp lệ trong một trạng thái nhất định.

Dùng chuỗi phím

useHotkeySequence dùng cho các lệnh cần nhiều bước, ví dụ phím tắt kiểu Vim.
Người dùng phải bấm đúng thứ tự trong khoảng thời gian cho phép. Bạn có thể truyền timeout nếu muốn rút ngắn hoặc kéo dài thời gian chờ.

Ghi shortcut do người dùng chọn

useHotkeyRecorder phù hợp cho trang settings, nơi người dùng tự chọn shortcut.

Theo dõi phím đang được giữ

useKeyHold giúp UI phản hồi khi người dùng đang giữ một phím cụ thể.

Lưu ý khi dùng trong Next.js

  • Chỉ gọi hook trong client component.
  • Dùng Mod thay vì tự tách ControlMeta.
  • Không ghi đè shortcut quen thuộc của trình duyệt nếu không có lý do rõ ràng.
  • Luôn cho người dùng thấy shortcut bằng formatForDisplay.
  • Kiểm tra shortcut khi focus đang nằm trong input, textarea, select hoặc vùng contentEditable.
  • Với dialog, modal và panel, ưu tiên dùng enabled hoặc target để giới hạn phạm vi.
Với dashboard quản trị, hãy bắt đầu bằng các shortcut ít rủi ro như Mod+K, Mod+S, Escape, rồi mới thêm các shortcut một phím như G hoặc D.

Prompt gợi ý cho Claude Code

Tài liệu tham khảo