Menangani Fokus dan Perangkap Keyboard dalam Modal
Pertahankan fokus di dalam modal yang terbuka demi aksesibilitas menggunakan useRef dan pemantau event.
Menangani Fokus dan Perangkap Keyboard dalam Modal adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.
Selamat Datang
Alasan Perangkap Fokus Diperlukan
Apa Itu Perangkap Fokus
Menemukan Elemen focusable
const FOCUSABLE = [
'a[href]', 'button:not([disabled])',
'input:not([disabled])', 'select', 'textarea',
'[tabindex]:not([tabindex="-1"])'
].join(',');
const focusable = Array.from(
modalRef.current.querySelectorAll(FOCUSABLE)
);Menerapkan Perangkap
function handleTab(e) {
const focusable = /* array of focusable elements */;
const first = focusable[0];
const last = focusable[focusable.length - 1];
if (e.key !== 'Tab') return;
if (e.shiftKey) {
if (document.activeElement === first) {
e.preventDefault(); last.focus();
}
} else {
if (document.activeElement === last) {
e.preventDefault(); first.focus();
}
}
}Memindahkan Fokus Saat Modal Dibuka
useEffect(() => {
if (isOpen) {
const first = modalRef.current?.querySelector(FOCUSABLE);
first?.focus();
}
}, [isOpen]);Mengembalikan Fokus Saat Modal Ditutup
const previousFocus = useRef(null);
useEffect(() => {
if (isOpen) {
previousFocus.current = document.activeElement;
} else {
previousFocus.current?.focus();
}
}, [isOpen]);Menggunakan Pustaka focus-trap-react
import FocusTrap from 'focus-trap-react';
{isOpen && (
<FocusTrap>
<div role="dialog" aria-modal="true">
{children}
</div>
</FocusTrap>
)}Atribut ARIA untuk Modal
<div
role="dialog"
aria-modal="true"
aria-labelledby="modal-title"
>
<h2 id="modal-title">Confirm Delete</h2>
...
</div>Atribut Inert untuk Latar Belakang
useEffect(() => {
const root = document.getElementById('root');
if (isOpen) root.setAttribute('inert', '');
else root.removeAttribute('inert');
}, [isOpen]);Pemeriksaan Singkat
Ringkasan
Berikutnya
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menangani Fokus dan Perangkap Keyboard dalam Modal” gratis?
Ya — teks lengkap “Menangani Fokus dan Perangkap Keyboard dalam Modal” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menangani Fokus dan Perangkap Keyboard dalam Modal”?
Pertahankan fokus di dalam modal yang terbuka demi aksesibilitas menggunakan useRef dan pemantau event. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai React Academy?
Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Menangani Fokus dan Perangkap Keyboard dalam Modal” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?
Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Apa Itu React Portal?
- Membangun Komponen Modal dengan Portal
- Menangani Fokus dan Perangkap Keyboard dalam Modal
- Tooltip dan Menu Dropdown dengan Portal