Konteks React untuk Keadaan Tema
Bina ThemeProvider yang mendedahkan tema semasa dan fungsi togol kepada seluruh pepohon komponen.
Konteks React untuk Keadaan Tema ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.
Mencipta ThemeContext
Mulakan dengan memanggil createContext() menggunakan nilai lalai yang sepadan dengan bentuk konteks anda: const ThemeContext = createContext({ theme: 'light', toggleTheme: () => {} }). Nilai lalai ini hanya digunakan apabila komponen membaca konteks tanpa Provider induk, yang membantu dalam ujian komponen secara berasingan.
Komponen ThemeProvider
Komponen ThemeProvider ialah pembungkus yang mengandungi semua logik tema. Komponen ini membaca keutamaan sistem semasa dipasang, mengurus keadaan theme, menyediakan fungsi toggleTheme, dan membungkus anak-anaknya dalam ThemeContext.Provider value={{ theme, toggleTheme }}. Letakkannya berhampiran bahagian atas pepohon komponen anda.
Menggunakan Konteks dengan useContext
Mana-mana komponen keturunan boleh mengakses tema dengan memanggil useContext(ThemeContext). Fungsi ini mengembalikan nilai konteks semasa, termasuk theme dan toggleTheme. Komponen itu dipaparkan semula secara automatik apabila tema berubah, jadi keadaannya sentiasa disegerakkan tanpa perlu menghantar prop secara berantai.
Menyegerakkan data-theme dengan DOM
Pemboleh ubah CSS bergantung pada atribut data-theme pada elemen akar. Dalam ThemeProvider, tambahkan useEffect yang dijalankan setiap kali theme berubah: document.documentElement.setAttribute('data-theme', theme). Ini menghubungkan keadaan React dengan lapisan CSS dengan lancar.
Menyimpan Pilihan Pengguna dalam localStorage
Untuk mengekalkan pilihan pengguna selepas halaman dimuat semula, tulis ke localStorage setiap kali tema berubah: localStorage.setItem('theme', theme). Anda boleh merangkumkan logik ini dalam cangkuk tersuai useLocalStorage yang mengembalikan pasangan seperti keadaan dan mengekalkan setiap kemas kini secara automatik.
Memulakan Tema daripada localStorage
Semasa memulakan keadaan tema, baca localStorage terlebih dahulu: localStorage.getItem('theme'). Jika tiada nilai tersimpan, gunakan keutamaan sistem sebagai sandaran melalui window.matchMedia('(prefers-color-scheme: dark)').matches. Pemulaan ini hanya dijalankan sekali apabila komponen dipasang.
Turutan Keutamaan Tema
Turutan keutamaan yang betul daripada paling tinggi kepada paling rendah ialah: keutamaan pengguna yang tersimpan dalam localStorage, kemudian keutamaan sistem OS, dan akhirnya nilai lalai yang ditetapkan dalam kod, biasanya tema cerah. Turutan ini memastikan pengguna sentiasa mempunyai kawalan terakhir, sambil tetap menghormati konfigurasi OS mereka jika mereka belum membuat pilihan secara jelas dalam aplikasi.
Cangkuk Kemudahan useTheme
Memanggil useContext(ThemeContext) secara terus dalam setiap komponen mendedahkan butiran pelaksanaan. Sebaliknya, eksportkan cangkuk useTheme: function useTheme() { return useContext(ThemeContext); }. Komponen kini mengimport useTheme dan memanggilnya tanpa perlu mengetahui konteks asas yang digunakan.
Menyediakan Fungsi Togol
Fungsi toggleTheme bertukar antara light dan dark: setTheme(prev => prev === 'light' ? 'dark' : 'light'). Dedahkan fungsi ini melalui konteks supaya mana-mana butang di mana-mana bahagian pepohon boleh mencetuskannya. Keadaan disimpan di satu tempat, manakala logik togol dikongsi di seluruh aplikasi.
Memoisasi Nilai Konteks
Objek nilai konteks dicipta semula pada setiap pemaparan ThemeProvider. Bungkusnya dalam useMemo untuk mengelakkan semua pengguna konteks dipaparkan semula tanpa perlu: const value = useMemo(() => ({ theme, toggleTheme }), [theme]). Ini ialah pengoptimuman prestasi yang biasa digunakan untuk penyedia konteks.
Menguji ThemeProvider
Dalam ujian, bungkus pemaparan dalam utiliti tersuai renderWithTheme yang menggunakan ThemeProvider sebagai pembungkus. Anda juga boleh mencipta konteks olok-olok yang ringkas untuk ujian berasingan: ThemeContext.Provider value={{ theme: 'dark', toggleTheme: jest.fn() }}. Dengan ini, anda boleh menguji komponen dalam keadaan tema tertentu.
Turutan Keutamaan Tema
Apakah turutan keutamaan yang betul untuk memulakan tema aplikasi, daripada keutamaan paling tinggi kepada paling rendah?
Ulang Kaji Pelajaran: Konteks React untuk Keadaan Tema
Cipta ThemeContext dan ThemeProvider yang mengurus keadaan tema, menyegerakkannya dengan localStorage, dan menetapkan data-theme pada dokumen. Gunakan cangkuk kemudahan useTheme untuk penggunaan yang kemas. Turutan keutamaannya ialah: pilihan tersimpan, kemudian keutamaan sistem, dan akhirnya nilai lalai.
Pelajari React dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 88
- Pelajaran
- 324
Soalan Lazim
Adakah pelajaran “Konteks React untuk Keadaan Tema” percuma?
Ya — teks penuh “Konteks React untuk Keadaan Tema” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Konteks React untuk Keadaan Tema”?
Bina ThemeProvider yang mendedahkan tema semasa dan fungsi togol kepada seluruh pepohon komponen. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan React Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Konteks React untuk Keadaan Tema” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?
Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mengesan Skema Warna Sistem
- Pemboleh Ubah CSS untuk Menukar Tema
- Konteks React untuk Keadaan Tema
- Mengekalkan Tema dan Menghalang Kelipan