Mendeteksi Skema Warna Sistem
Baca preferensi mode gelap OS pengguna dengan prefers-color-scheme dan perbarui state React saat preferensi tersebut berubah.
Mendeteksi Skema Warna Sistem adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Kueri Media prefers-color-scheme
Kueri media CSS prefers-color-scheme mendeteksi apakah pengguna telah mengatur sistem operasinya untuk menggunakan tema warna gelap atau terang. Kueri ini menerima dua nilai: dark dan light. Preferensi ini diatur pada tingkat OS dalam pengaturan sistem, bukan di peramban.
Mode Gelap CSS melalui Kueri Media
Anda dapat menerapkan gaya gelap hanya dengan CSS menggunakan @media (prefers-color-scheme: dark) { ... }. Di dalam blok ini, Anda mengganti warna, latar belakang, dan garis tepi agar sesuai dengan palet gelap. Pendekatan ini tidak memerlukan JavaScript dan tetap berfungsi bahkan sebelum React dipasang.
window.matchMedia dalam JavaScript
Dalam JavaScript, window.matchMedia('(prefers-color-scheme: dark)') mengembalikan objek MediaQueryList. Anda dapat menggunakannya untuk membaca preferensi sistem saat ini secara terprogram di dalam hook React atau pemroses peristiwa. Inilah penghubung antara kueri media CSS dan logika JS Anda.
Membaca Nilai Awal
Objek MediaQueryList memiliki properti matches yang mengembalikan nilai logis. Jika matches bernilai true, sistem berada dalam mode gelap; jika false, sistem berada dalam mode terang. Biasanya Anda membaca nilai ini sekali saat pemasangan untuk menginisialisasi status tema.
Mendengarkan Perubahan Sistem
Pengguna dapat mengubah skema warna OS kapan saja. Untuk merespons secara dinamis, panggil mediaQuery.addEventListener('change', handler), dengan handler menerima MediaQueryListEvent yang telah diperbarui. Objek peristiwa tersebut juga memiliki nilai logis matches yang mencerminkan preferensi baru.
Membuat Pengait usePrefersDarkMode
Pendekatan yang rapi adalah membuat pengait kustom menggunakan useSyncExternalStore. Pengait ini berlangganan melalui mediaQuery.addEventListener dan menyediakan fungsi snapshot yang mengembalikan mediaQuery.matches. Dengan demikian, pengait tetap tersinkronisasi dengan API peramban eksternal tanpa pengelolaan status manual.
Membatalkan Langganan saat Pembersihan
Saat komponen Anda dilepas, Anda harus menghapus pendengar peristiwa untuk mencegah kebocoran memori. Dalam pembersihan useEffect, panggil mediaQuery.removeEventListener('change', handler). Dengan useSyncExternalStore, fungsi langganan harus mengembalikan fungsi pembatalan langganan yang melakukan hal yang sama.
Preferensi Sistem vs Penggantian oleh Pengguna
Preferensi sistem adalah apa yang dilaporkan oleh OS. Namun, pengguna sering ingin mengganti tema aplikasi secara terpisah, misalnya mempertahankan aplikasi dalam mode terang saat OS berada dalam mode gelap. Arsitektur Anda harus membedakan bawaan sistem dari penggantian eksplisit oleh pengguna yang disimpan dalam localStorage.
Meniru Skema Warna di DevTools
Chrome DevTools memungkinkan Anda meniru preferensi skema warna tanpa mengubah pengaturan OS. Buka DevTools, buka tab Rendering, lalu temukan menu tarik-turun "Emulate CSS media feature prefers-color-scheme". Fitur ini sangat berguna untuk menguji kedua tema dengan cepat selama pengembangan.
Menghormati Preferensi Pengguna secara Bawaan
Implementasi mode gelap yang baik membaca preferensi sistem sebagai titik awal bawaan dan langsung menerapkannya. Hal ini menunjukkan penghormatan terhadap pengaturan aksesibilitas pengguna. Hanya setelah pengguna secara eksplisit mengubah tema di aplikasi Anda, simpan dan gunakan penggantian yang berbeda.
Pertimbangan SSR untuk Preferensi Sistem
Di server, window.matchMedia tidak tersedia. Jika Anda merender di server, gunakan penjagaan typeof window !== 'undefined' sebelum memanggil matchMedia. Untuk aplikasi SSR, baca preferensi pengguna dari cookie atau header HTTP agar tidak terjadi ketidaksesuaian hidrasi.
Pemeriksaan API matchMedia
Properti apa dari objek MediaQueryList yang memberi tahu Anda apakah kueri media saat ini cocok?
Ringkasan Pelajaran: Mendeteksi Skema Warna Sistem
Kueri media prefers-color-scheme menyediakan preferensi warna OS dalam CSS dan JavaScript. Gunakan window.matchMedia untuk membaca dan mendengarkan perubahan, selalu hapus pendengar peristiwa, dan bedakan bawaan sistem dari penggantian pengguna. Emulasi Chrome DevTools mempercepat pengujian kedua tema.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mendeteksi Skema Warna Sistem” gratis?
Ya — teks lengkap “Mendeteksi Skema Warna Sistem” 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 “Mendeteksi Skema Warna Sistem”?
Baca preferensi mode gelap OS pengguna dengan prefers-color-scheme dan perbarui state React saat preferensi tersebut berubah. 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 1 dari 4.
Berapa lama pelajaran “Mendeteksi Skema Warna Sistem” 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
- Mendeteksi Skema Warna Sistem
- Variabel CSS untuk Pergantian Tema
- React Context untuk State Tema
- Menyimpan Tema dan Mencegah Kilatan