HUOMAA: Tämä opetusohjelma koskee kehittäjiä, jotka käyttävät CSS-in-JS-tyyliä, esim. Emotion.js, Material UI jne.
Vaihe 1: Käytä Recoil atomia valitun teeman nimenä
import { PaletteMode } from "@mui/material";
import { atom } from "recoil"; export const ThemeName = atom<PaletteMode>({ key: "ThemeName", effects: []
});
Vaihe 2: Käytä Recoil-valitsinta tällä hetkellä valitulle teemaobjektille
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(); },
});
Vaihe 3: Lisää useTheme()
, useToggleTheme()
Reagoi koukut
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")); }, [] );
}
Vaihe 4: Tallenna/palauta valitun teeman nimi kohteeseen/ mistä 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); }); }, ],
});
Vaihe 5: Lisää ThemeProvider
ylimmän tason React-komponenttiin
import { ThemeProvider } from "@mui/material";
import { useTheme } from "../theme/index.js"; function App(): JSX.Element { const theme = useTheme(); return ( <ThemeProvider theme={theme}> {/* ... */} </Theme> );
}
nähdä app/theme/index.ts
in React Starter Kit
Esittelymateriaalit
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- Platoblockchain. Web3 Metaverse Intelligence. Tietoa laajennettu. Pääsy tästä.
- Lähde: https://www.codementor.io/koistya/how-to-implement-ui-theme-switching-dark-mode-with-react-and-recoil-1vvjynmi1e
- 1
- 9
- a
- ja
- lähestymistapa
- atomi
- Tällä hetkellä
- tumma
- kehittäjille
- vaikutukset
- jne.
- Eetteri (ETH)
- alkaen
- toiminto
- saada
- Miten
- Miten
- HTTPS
- toteuttaa
- tuoda
- in
- avain
- valo
- materiaali
- Materiaali ui
- tila
- nimi
- Platon
- Platonin tietotieto
- PlatonData
- suhtautua
- rekyyli
- merkityksellinen
- Esittelymateriaalit
- palata
- valittu
- Vaihe
- -
- teema
- että
- huipputaso
- laukaista
- oppitunti
- ui
- käyttää
- arvo
- zephyrnet
Lisää aiheesta Codementor React Fact
(VIDEO) NodeJS ja React – Siirry LIVE-lähetykseen Renderin avulla
Lähdesolmu: 1776510
Aikaleima: Marraskuu 7, 2022
React, Tremor & Tailwind – Koodaajan tilastot GitHub API:n kautta
Lähdesolmu: 1775346
Aikaleima: Joulukuu 7, 2022
Mitä voidaan käyttää suurten reaktiivisten komponenttien reaktorissa
Lähdesolmu: 1779701
Aikaleima: Elokuu 17, 2022
Valinta luokan komponenttien ja toiminnallisten komponenttien välillä Reactissa
Lähdesolmu: 1886369
Aikaleima: Jan 9, 2023
miksi enimmäkseen kehittäjät haluavat reagoida kulmikkaan
Lähdesolmu: 2033927
Aikaleima: Mar 26, 2023