NOT: Bu eğitim, Emotion.js, Material UI, vb. gibi CSS-in-JS stil yaklaşımı kullanan geliştiricilerle ilgilidir.
Adım 1: Seçili olan temanın adı için Geri Tepme atomunu kullanın
import { PaletteMode } from "@mui/material";
import { atom } from "recoil"; export const ThemeName = atom<PaletteMode>({ key: "ThemeName", effects: []
});
Adım 2: Seçili olan tema nesnesi için Geri Tepme seçiciyi kullanın
import { createTheme } from "@mui/material";
import { selector } from "recoil"; export const Theme = selector({ key: "Theme", dangerouslyAllowMutability: true, get(ctx) { const name = ctx.get(ThemeName); return createTheme(); },
});
3. Adım: Ekle useTheme()
, useToggleTheme()
Kancalara tepki
import { useRecoilValue, useRecoilCallback } from "recoil"; export function useTheme() { return useRecoilValue(Theme);
} export function useToggleTheme() { return useRecoilCallback( (ctx) => () => { ctx.set(ThemeName, (prev) => (prev === "dark" ? "light" : "dark")); }, [] );
}
Adım 4: Seçili olan tema adını şuraya kaydet/geri yükle localStorage
export const ThemeName = atom<PaletteMode>({ key: "ThemeName", effects: [ (ctx) => { const storageKey = "theme"; if (ctx.trigger === "get") { const name: PaletteMode = localStorage?.getItem(storageKey) === "dark" ? "dark" : localStorage?.getItem(storageKey) === "light" ? "light" : matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light"; ctx.setSelf(name); } ctx.onSet((value) => { localStorage?.setItem(storageKey, value); }); }, ],
});
5. Adım: Ekle ThemeProvider
üst düzey React bileşenine
import { ThemeProvider } from "@mui/material";
import { useTheme } from "../theme/index.js"; function App(): JSX.Element { const theme = useTheme(); return ( <ThemeProvider theme={theme}> {/* ... */} </Theme> );
}
Yerimizi app/theme/index.ts
in React Başlangıç Kiti
Kaynaklar
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- Plato blok zinciri. Web3 Metaverse Zekası. Bilgi Güçlendirildi. Buradan Erişin.
- Kaynak: https://www.codementor.io/koistya/how-to-implement-ui-theme-switching-dark-mode-with-react-and-recoil-1vvjynmi1e
- 1
- 9
- a
- ve
- yaklaşım
- atom
- Şu anda
- karanlık
- geliştiriciler
- etkileri
- vb
- Eter (ETH)
- itibaren
- işlev
- almak
- Ne kadar
- Nasıl Yapılır
- HTTPS
- uygulamak
- ithalat
- in
- anahtar
- ışık
- malzeme
- malzeme kullanıcı arayüzü
- Moda
- isim
- Platon
- Plato Veri Zekası
- PlatoVeri
- React
- Geri tepme
- uygun
- Kaynaklar
- dönüş
- seçilmiş
- adım
- The
- tema
- için
- Üst düzey
- tetikleyebilir
- öğretici
- ui
- kullanım
- değer
- zefirnet
Den fazla Codementor Tepki Gerçeği
Mentorluğun Gücü: Bir Mentora Sahip Olmak Profesyonel Gelişim İçin Neden Gereklidir | Kodlayıcı
Kaynak Düğüm: 2145514
Zaman Damgası: Haziran 22, 2023
Personel Mühendisi Röportajı: Teknik Liderliğe Giden Yolda Seyretmek | Kodlayıcı
Kaynak Düğüm: 2144447
Zaman Damgası: Haziran 22, 2023
Chat GPT ile projesinin engelini kaldıran bilgisayar bilimi öğrencisi
Kaynak Düğüm: 2001450
Zaman Damgası: Mar 9, 2023
React ile HTMX'i Karşılaştırma: Doğru Ön Uç Yaklaşımını Seçme | Kodlayıcı
Kaynak Düğüm: 2144445
Zaman Damgası: Haziran 22, 2023
React Hooks ve başsız bir CMS kullanarak verileri arayın ve filtreleyin
Kaynak Düğüm: 1780725
Zaman Damgası: Ağustos 4, 2022
React JS'deki kancalar ve bunlara neden ihtiyacımız var?
Kaynak Düğüm: 2041290
Zaman Damgası: Mar 30, 2023
Ön Uç Geliştirme için Etkili Performans Optimizasyon Teknikleri | Kodlayıcı
Kaynak Düğüm: 2125812
Zaman Damgası: Haziran 8, 2023
Stajyer Rehberi Sohbet GPT Full Stack: Nest, React, TypeScript
Kaynak Düğüm: 1996513
Zaman Damgası: Mar 6, 2023